Skip to content

Commit 5a374e6

Browse files
committed
Explain the explicit declaration of (status quo) defaults.
Closes w3c#8.
1 parent eea6a15 commit 5a374e6

File tree

2 files changed

+56
-3
lines changed

2 files changed

+56
-3
lines changed

index.bs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,16 @@ urlPrefix: https://tc39.es/ecma262/; spec: ECMA262; type: interface
139139
"href": "https://www.chromium.org/developers/design-documents/oop-iframes",
140140
"title": "Out-of-Process iframes (OOPIFs)",
141141
"authors": [ "Chromium" ]
142+
},
143+
"embedding-requires-opt-in": {
144+
"href": "https://github.com/mikewest/embedding-requires-opt-in",
145+
"title": "Embedding Should Require Explicit Opt-In",
146+
"authors": [ "Mike West" ]
147+
},
148+
"coop-by-default": {
149+
"href": "https://github.com/mikewest/coop-by-default",
150+
"title": "COOP By Default",
151+
"authors": [ "Mike West" ]
142152
}
143153
}
144154
</pre>
@@ -450,6 +460,7 @@ or fetched cross-origin. Three scenarios are worth considering:
450460
Content-Security-Policy: frame-ancestors https://trusted1.example https://trusted2.example
451461
</pre>
452462
</div>
463+
453464

454465
For example:
455466

@@ -471,6 +482,27 @@ or fetched cross-origin. Three scenarios are worth considering:
471482

472483
* ISSUE: Find some links.
473484

485+
Implementation Considerations {#considerations}
486+
===============================================
487+
488+
Explicitly Setting Headers with Default Values {#explicit-defaults}
489+
-------------------------------------------------------------------
490+
491+
Several recommendations above suggest that developers would be well-served to set headers like
492+
`X-Frame-Options: ALLOWALL` or `Cross-Origin-Opener-Policy: unsafe-none` on responses. These
493+
map to the web's status quo behavior, and seem therefore superfluous. Why should developers
494+
set them?
495+
496+
The core reason is that these defaults are poor fits for today's threats, and we ought to be working
497+
to change them. Proposals like [[EMBEDDING-REQUIRES-OPT-IN]] and [[COOP-BY-DEFAULT]] suggest that
498+
we shift the web's defaults away from requiring developers to opt-into more secure behaviors by
499+
making them opt-out rather than opt-in. This would place the configuration cost on those developers
500+
whose projects require risky settings.
501+
502+
This document recommends setting those less-secure header values explicitly, as that makes it more
503+
likely that we'll be able to shift the web's defaults in the future.
504+
505+
474506
Acknowledgements {#acks}
475507
========================
476508

index.html

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1486,7 +1486,7 @@
14861486
</style>
14871487
<meta content="Bikeshed version c5172e83, updated Fri Nov 20 15:35:20 2020 -0800" name="generator">
14881488
<link href="https://mikewest.github.io/post-spectre-webdev/" rel="canonical">
1489-
<meta content="65262d0a128165f7a5deaa06308476effff82a10" name="document-revision">
1489+
<meta content="eea6a15dec8c901953475ce68e0c899cb702d5db" name="document-revision">
14901490
<style>/* style-autolinks */
14911491

14921492
.css.css, .property.property, .descriptor.descriptor {
@@ -2098,7 +2098,12 @@ <h2 class="no-num no-toc no-ref" id="contents">Table of Contents</h2>
20982098
<li><a href="#documents-as-popups"><span class="secno">2.2.3</span> <span class="content">Documents Expecting Cross-Origin Openers</span></a>
20992099
</ol>
21002100
</ol>
2101-
<li><a href="#acks"><span class="secno">3</span> <span class="content">Acknowledgements</span></a>
2101+
<li>
2102+
<a href="#considerations"><span class="secno">3</span> <span class="content">Implementation Considerations</span></a>
2103+
<ol class="toc">
2104+
<li><a href="#explicit-defaults"><span class="secno">3.1</span> <span class="content">Explicitly Setting Headers with Default Values</span></a>
2105+
</ol>
2106+
<li><a href="#acks"><span class="secno">4</span> <span class="content">Acknowledgements</span></a>
21022107
<li>
21032108
<a href="#index"><span class="secno"></span> <span class="content">Index</span></a>
21042109
<ol class="toc">
@@ -2388,7 +2393,19 @@ <h4 class="heading settled" data-level="2.2.3" id="documents-as-popups"><span cl
23882393
<p class="issue" id="issue-94179e25②"><a class="self-link" href="#issue-94179e25②"></a> Find some links.</p>
23892394
</ul>
23902395
</ol>
2391-
<h2 class="heading settled" data-level="3" id="acks"><span class="secno">3. </span><span class="content">Acknowledgements</span><a class="self-link" href="#acks"></a></h2>
2396+
<h2 class="heading settled" data-level="3" id="considerations"><span class="secno">3. </span><span class="content">Implementation Considerations</span><a class="self-link" href="#considerations"></a></h2>
2397+
<h3 class="heading settled" data-level="3.1" id="explicit-defaults"><span class="secno">3.1. </span><span class="content">Explicitly Setting Headers with Default Values</span><a class="self-link" href="#explicit-defaults"></a></h3>
2398+
<p>Several recommendations above suggest that developers would be well-served to set headers like <code>X-Frame-Options: ALLOWALL</code> or <code>Cross-Origin-Opener-Policy: unsafe-none</code> on responses. These
2399+
map to the web’s status quo behavior, and seem therefore superfluous. Why should developers
2400+
set them?</p>
2401+
<p>The core reason is that these defaults are poor fits for today’s threats, and we ought to be working
2402+
to change them. Proposals like <a data-link-type="biblio" href="#biblio-embedding-requires-opt-in">[EMBEDDING-REQUIRES-OPT-IN]</a> and <a data-link-type="biblio" href="#biblio-coop-by-default">[COOP-BY-DEFAULT]</a> suggest that
2403+
we shift the web’s defaults away from requiring developers to opt-into more secure behaviors by
2404+
making them opt-out rather than opt-in. This would place the configuration cost on those developers
2405+
whose projects require risky settings.</p>
2406+
<p>This document recommends setting those less-secure header values explicitly, as that makes it more
2407+
likely that we’ll be able to shift the web’s defaults in the future.</p>
2408+
<h2 class="heading settled" data-level="4" id="acks"><span class="secno">4. </span><span class="content">Acknowledgements</span><a class="self-link" href="#acks"></a></h2>
23922409
<p>This document relies upon a number of excellent resources that spell out much of the foundation
23932410
of our understanding of Spectre’s implications for the web, and justify the mitigation strategies
23942411
we currently espouse. The following is an incomplete list of those works:</p>
@@ -2609,6 +2626,8 @@ <h3 class="no-num no-ref heading settled" id="informative"><span class="content"
26092626
<dd>Chris Palmer. <a href="https://noncombatant.org/application-principals/">Isolating Application-Defined Principals</a>. 2018-06-19. URL: <a href="https://noncombatant.org/application-principals/">https://noncombatant.org/application-principals/</a>
26102627
<dt id="biblio-coi-threat-model">[COI-THREAT-MODEL]
26112628
<dd>Artur Janc. <a href="https://arturjanc.com/coi-threat-model.pdf">Notes on the threat model of cross-origin isolation</a>. 2020-12. URL: <a href="https://arturjanc.com/coi-threat-model.pdf">https://arturjanc.com/coi-threat-model.pdf</a>
2629+
<dt id="biblio-coop-by-default">[COOP-BY-DEFAULT]
2630+
<dd>Mike West. <a href="https://github.com/mikewest/coop-by-default">COOP By Default</a>. URL: <a href="https://github.com/mikewest/coop-by-default">https://github.com/mikewest/coop-by-default</a>
26122631
<dt id="biblio-coop-coep">[COOP-COEP]
26132632
<dd>Eiji Kitamura. <a href="https://web.dev/coop-coep/">Making your website 'cross-origin isolated' using COOP and COEP</a>. URL: <a href="https://web.dev/coop-coep/">https://web.dev/coop-coep/</a>
26142633
<dt id="biblio-coop-coep-explained">[COOP-COEP-EXPLAINED]
@@ -2617,6 +2636,8 @@ <h3 class="no-num no-ref heading settled" id="informative"><span class="content"
26172636
<dd>Mike West. <a href="https://wicg.github.io/cross-origin-embedder-policy/">Cross-Origin Embedder Policy</a>. 2020-09-29. URL: <a href="https://wicg.github.io/cross-origin-embedder-policy/">https://wicg.github.io/cross-origin-embedder-policy/</a>
26182637
<dt id="biblio-cross-origin-opener-policy-explainer">[CROSS-ORIGIN-OPENER-POLICY-EXPLAINER]
26192638
<dd>Charlie Reis; Camille Lamy. <a href="https://docs.google.com/document/d/1Ey3MXcLzwR1T7aarkpBXEwP7jKdd2NvQdgYvF8_8scI/edit">Cross-Origin-Opener-Policy Explainer</a>. 2020-05-24. URL: <a href="https://docs.google.com/document/d/1Ey3MXcLzwR1T7aarkpBXEwP7jKdd2NvQdgYvF8_8scI/edit">https://docs.google.com/document/d/1Ey3MXcLzwR1T7aarkpBXEwP7jKdd2NvQdgYvF8_8scI/edit</a>
2639+
<dt id="biblio-embedding-requires-opt-in">[EMBEDDING-REQUIRES-OPT-IN]
2640+
<dd>Mike West. <a href="https://github.com/mikewest/embedding-requires-opt-in">Embedding Should Require Explicit Opt-In</a>. URL: <a href="https://github.com/mikewest/embedding-requires-opt-in">https://github.com/mikewest/embedding-requires-opt-in</a>
26202641
<dt id="biblio-long-term-mitigations">[LONG-TERM-MITIGATIONS]
26212642
<dd>Charlie Reis. <a href="https://docs.google.com/document/d/1dnUjxfGWnvhQEIyCZb0F2LmCZ9gio6ogu2rhMGqi6gY/edit">Long-Term Web Browser Mitigations for Spectre</a>. 2019-03-04. URL: <a href="https://docs.google.com/document/d/1dnUjxfGWnvhQEIyCZb0F2LmCZ9gio6ogu2rhMGqi6gY/edit">https://docs.google.com/document/d/1dnUjxfGWnvhQEIyCZb0F2LmCZ9gio6ogu2rhMGqi6gY/edit</a>
26222643
<dt id="biblio-oopif">[OOPIF]

0 commit comments

Comments
 (0)