Entwickler, die COEP verwenden, können jetzt iFrames von Drittanbietern einbetten, die COEP nicht selbst verwenden.
Warum wir COEP brauchen
Einige Web-APIs erhöhen das Risiko von Side-Channel-Angriffen wie Spectre. Um dieses Risiko zu minimieren, bieten Browser eine Opt-in-basierte isolierte Umgebung namens ursprungsübergreifende Isolierung, für die unter anderem COEP bereitgestellt wird. So können Websites privilegierte Funktionen wie SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
und hochpräzise Timer mit besserer Auflösung nutzen.
Um die ursprungsübergreifende Isolation zu aktivieren, müssen Websites die folgenden beiden HTTP-Header senden:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Herausforderungen bei der Aktivierung von COEP
Die plattformübergreifende Isolation bietet Webseiten zwar mehr Sicherheit und die Möglichkeit, leistungsstarke Funktionen zu aktivieren, die Bereitstellung von COEP kann jedoch schwierig sein. Eine der größten Herausforderungen besteht darin, dass alle ursprungsübergreifenden iFrames auch COEP und CORP bereitstellen müssen. iFrames ohne diese Header werden nicht vom Browser geladen.
Die Iframes werden in der Regel von einem Drittanbieter bereitgestellt, für den die Implementierung von COEP möglicherweise nicht einfach ist.
Anonyme iFrames als Retter in der Not
Hier kommt der anonyme Iframe ins Spiel. Wenn du dem <iframe>
-Element das anonymous
-Attribut hinzufügst, wird der Iframe aus einer anderen Partition des sitzungsspezifischen Speichers geladen und unterliegt nicht mehr den COEP-Einschränkungen.
Beispiel:
<iframe anonymous src="https://example.com">
Der iFrame wird in einem neuen sitzungsspezifischen Kontext erstellt und hat keinen Zugriff auf die Cookies, die mit der Website der obersten Ebene verknüpft sind. Er beginnt mit einer
leeren Cookie-Glas. Ebenso laden und speichern Speicher-APIs wie LocalStorage
, CacheStorage
und IndexedDB
Daten in der neuen sitzungsspezifischen Partition. Die Partition ist auf das aktuelle Dokument der obersten Ebene und den Ursprung des Iframes beschränkt. Der Speicherplatz wird freigegeben, sobald das Dokument der obersten Ebene entladen wurde.
Anonyme Iframes unterliegen nicht den COEP-Embedding-Regeln. Das ist jedoch weiterhin sicher, da sie jedes Mal aus einem neuen leeren Kontext geladen werden. Sie werden geladen, ohne dass ihre Daten personalisiert werden. Sie enthalten nur öffentliche Daten, die für einen Angreifer nicht von Wert sind.
Demo
Einen anonymen iFrame findest du unter: https://anonymous-iframe.glitch.me/
Für Ursprungstest registrieren
Damit Entwickler die ursprungsübergreifende Isolation mithilfe von anonymen iFrames nutzen können, stellen wir sie in Chrome von Version 106 bis 108 als Ursprungstest zur Verfügung.
Registrieren Sie sich für den Ursprungstest, damit auf Ihrer Website anonyme iFrames verwendet werden können:
- Fordere ein Token für deinen Ursprung an.
- Sie haben folgende Möglichkeiten, das Token zu verwenden:
- In Ihrem HTML-Code:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- In deinem JavaScript-Code:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- In den HTTP-Headern:
text Origin-Trial: TOKEN_GOES_HERE
- In Ihrem HTML-Code:
- Fügen Sie Ihrer Seite einen anonymen iFrame hinzu:
html <iframe anonymous src="https://example.com">
Wenn Sie Feedback zu dieser Funktion haben, erstellen Sie bitte ein Problem im GitHub-Repository.
Test für Drittanbieter-Ursprung
Der Ursprungstest ist auch für Drittanbieter-Scripts verfügbar. Es bedeutet, dass es durch auf der Seite eingebettete Skripts aktiviert werden kann.
Leran zeigt die Registrierung für einen Ursprungstest eines Drittanbieters.
FAQ
Wird diese Funktion auch in anderen Browsern übernommen?
- Mozilla-Anfrage zur Position: Ausstehend
- Webkit-Anfrage zur Position: Kein Signal
- W3C TAG-Anfrage zur Position: erfüllt
Sind iFrames, die in <iframe anonymous>
verschachtelt sind, anonym?
Ja. Sie wird vererbt. Sobald ein iFrame anonym ist, gilt dies für alle iFrames in der gesamten Unterstruktur, auch ohne das Attribut anonymous
.
Sind Pop-ups, die über <iframe anonymous>
erstellt werden, ebenfalls anonym?
Pop-ups werden so geöffnet, als wäre noopener
festgelegt. Sie werden aus einem neuen regulären Kontext auf oberster Ebene erstellt und sind nicht anonym. Sie können nicht mit dem anonymen iFrame kommunizieren.
Ressourcen
- Website mit COOP und COEP „ursprungsübergreifend isoliert“ gestalten
- Warum Sie für leistungsstarke Funktionen „ursprungsübergreifend isoliert“ benötigen
- Leitfaden zum Aktivieren der ursprungsübergreifenden Isolierung
- Aktualisierungen für SharedArrayBuffer in Chrome 88 für Android und Chrome 92 für Computer
- Ressourcen zwischen verschiedenen Ursprüngen ohne CORP-Header mit
COEP: credentialless
laden