Anonieme proefversie van iframe-oorsprong: integreer eenvoudig iframes in COEP-omgevingen

Arthur Sonzogni
Arthur Sonzogni

Ontwikkelaars die COEP gebruiken, kunnen nu iframes van derden insluiten die zelf geen COEP gebruiken.

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 , die onder andere de inzet van COEP vereist. Hierdoor 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 twee HTTP-headers verzenden:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

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 ook COEP en CORP moeten inzetten. Iframes zonder die headers worden niet door de browser geladen.

De iframes worden doorgaans bediend door een derde partij voor wie het misschien niet eenvoudig is om COEP in te zetten.

Anoniem iframe schiet te hulp

Dat is waar anoniem iframe in beeld komt. Door het anonymous attribuut aan het <iframe> -element toe te voegen, wordt het iframe geladen vanaf een andere, kortstondige opslagpartitie en is het niet meer onderworpen aan COEP-beperkingen.

Voorbeeld:

<iframe anonymous src="https://example.com">

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. Het begint 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 beperkt tot het huidige document op het hoogste niveau en de oorsprong van het iframe. De opslag wordt gewist zodra het document op het hoogste niveau is verwijderd.

Anonieme iframes vallen niet onder de COEP-inbeddingsregels. Dit is nog steeds veilig, omdat ze elke keer vanuit een nieuwe lege context worden geladen. Ze worden geladen zonder dat hun gegevens worden gepersonaliseerd. Ze bevatten alleen openbare gegevens, die niet waardevol zijn voor een aanvaller.

Demo

Je kunt een anoniem iframe bekijken op: https://anonymous-iframe.glitch.me/

Meld u aan voor een origin-proefperiode

Om ervoor te zorgen dat Anonieme iframes ontwikkelaars helpen cross-origin-isolatie toe te passen, stellen we ze vanaf versie 106 tot 108 beschikbaar in Chrome als origin-proefversie.

Registreer u voor de origin-proefversie om ervoor te zorgen dat uw website anonieme iframes kan gebruiken:

  1. Vraag een token aan voor uw herkomst.
  2. Gebruik het token op een van de volgende manieren:
    • In je HTML: html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • In uw Javascript: js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
    • In de HTTP-headers: text Origin-Trial: TOKEN_GOES_HERE
  3. Voeg een anoniem iframe toe aan uw pagina: html <iframe anonymous src="https://example.com">

Als je feedback hebt over deze functie, dien dan een probleem in de GitHub-repository in.

Oorsprongsproces door derden

De Origin-proefversie is ook beschikbaar voor scripts van derden. Het betekent dat het kan worden ingeschakeld door scripts die op de pagina zijn ingebed.

Lees meer over hoe u zich kunt registreren voor een proefversie van derden .

Veelgestelde vragen

Zal deze functie door andere browsers worden overgenomen?

Zijn iframes genest in <iframe anonymous> anoniem?

Ja. Het is geërfd. Zodra een iframe anoniem is, geldt dat voor alle iframes in de hele subboom, zelfs zonder een anonymous attribuut.

Zijn pop-ups gemaakt van <iframe anonymous> ook anoniem?

Pop-ups worden geopend alsof er noopener is ingesteld. Ze worden gemaakt vanuit een nieuwe reguliere top-levelcontext en zijn niet anoniem. Ze kunnen niet communiceren met het anonieme iframe.

Bronnen