Ontwikkelaars die COEP gebruiken, kunnen nu iframes van derden insluiten die zelf geen COEP gebruiken.
Iframe-referentieloos is standaard ingeschakeld vanaf Chrome-versie 110. Het lost de meest voorkomende klachten op die ontwikkelaars die werken met Cross-Origin-Embedder-Policy (COEP) hebben: iframes van derden insluiten die COEP niet instellen.
Waarom we COEP nodig hebben
Sommige web-API's vergroten het risico op zijkanaalaanvallen zoals Spectre . Om dat risico te beperken, bieden browsers een op opt-in gebaseerde geïsoleerde omgeving, genaamd cross-origin isolation , waarvoor COEP moet worden ingezet. Door cross-origin-isolatie kunnen websites bevoorrechte functies gebruiken, waaronder SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
en uiterst nauwkeurige timers met een betere resolutie .
Om cross-origin-isolatie mogelijk te maken, moeten websites de volgende HTTP-headers verzenden:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
COEP:credentialless kan ook worden gebruikt als alternatief voor require-corp
. Zie de documentatie voor meer details.
Uitdagingen bij het inschakelen van COEP
Hoewel cross-origin-isolatie webpagina's een betere beveiliging biedt en de mogelijkheid biedt om krachtige functies in te schakelen, kan het implementeren van COEP moeilijk zijn. Een van de grootste uitdagingen is dat alle cross-origin iframes COEP en CORP moeten inzetten. Iframes zonder deze headers worden niet door de browser geladen.
Iframe credentialless schiet te hulp
We introduceren <iframe credentialless>
om iframes van derden te helpen insluiten die geen COEP instellen. Door het credentialless
attribuut aan het <iframe>
element toe te voegen, wordt het iframe geladen vanuit een andere, lege context. In het bijzonder wordt het zonder cookies geladen. Hierdoor kan de COEP-beperking worden opgeheven.
Voorbeeld:
<iframe credentialless src="https://example.com">
Dit iframe is gemaakt in een nieuwe kortstondige context en heeft geen toegang tot de cookies die zijn gekoppeld aan de website op het hoogste niveau. In plaats daarvan begint het met een lege koektrommel. Op dezelfde manier laden en bewaren opslag-API's zoals LocalStorage , CacheStorage , IndexedDB , enzovoort, gegevens in de nieuwe kortstondige partitie. De partitie is gericht op zowel het huidige document op het hoogste niveau als de oorsprong van het iframe. Al deze opslagruimte wordt gewist zodra het document op het hoogste niveau is verwijderd.
Credentialless iframes zijn niet onderworpen aan COEP-inbeddingsregels. Ze zijn nog steeds veilig: omdat ze elke keer vanuit een nieuwe, lege context worden geladen, mogen ze geen gepersonaliseerde gegevens bevatten, iets waar aanvallers op uit zijn. Als een iframe alleen openbare gegevens bevat, is het niet waardevol voor een aanvaller.
Demo
U kunt een demo bekijken van een iframe zonder referentie .
Veelgestelde vragen
Zal deze functie door andere browsers worden overgenomen?
- Mozilla Verzoek om positie: in behandeling
- Webkit Positieverzoek: Geen signaal
- W3C TAG Verzoek om positie: tevreden
Is een <iframe>
genest in een <iframe credentialless>
credentialless?
Ja. Het is geërfd. Zodra een iframe geen credentialless heeft, geldt dat voor alle iframes in de hele subboom, zelfs zonder een credentialless
attribuut.
Worden er ook pop-ups gemaakt van <iframe credentialless>
credentialless?
Pop-ups worden geopend alsof er noopener
is ingesteld. Ze worden gemaakt in een nieuwe reguliere top-levelcontext en zijn niet credentialless. Ze kunnen niet communiceren met het iframe zonder legitimatie.
Hoe kan ik detecteren dat het document is ingebed in een iframe zonder legitimatie?
window.credentialless
is waar binnen een credentialless iframe en anders false. De waarde ervan is undefined
in een webbrowser die <iframe credentialless>
niet ondersteunt.
Bronnen
- Maak uw website ‘cross-origin geïsoleerd’ met behulp van COOP en COEP
- Waarom je ‘cross-origin geïsoleerd’ nodig hebt voor krachtige functies
- Een gids om cross-origin-isolatie mogelijk te maken
- SharedArrayBuffer-updates in Android Chrome 88 en Desktop Chrome 92
- Laad cross-origine bronnen zonder CORP-headers met behulp van
COEP: credentialless
- IFrame-referentieloos - Webbeveiliging | MDN