Entwickler, die COEP verwenden, können jetzt iFrames von Drittanbietern einbetten, die COEP selbst nicht verwenden.
Warum wir COEP benötigen
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 werden muss. So können Websites privilegierte Funktionen wie SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
und hochpräzise Timer mit besserer Auflösung verwenden.
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 für alle quellenübergreifenden iFrames auch COEP und CORP bereitgestellt werden müssen. Iframes ohne diese Header werden vom Browser nicht 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. Es beginnt mit einem leeren Keksglas. Ebenso laden und speichern Speicher-APIs wie LocalStorage
, CacheStorage
und IndexedDB
Daten in der neuen sitzungsspezifischen Partition. Die Partition ist auf das aktuelle übergeordnete Dokument 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 einen 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 Ihre Website anonyme Iframes verwenden kann:
- 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 ein Problem im GitHub-Repository.
Test für Drittanbieter-Ursprung
Der Ursprungstest ist auch für Drittanbieter-Scripts verfügbar. Das bedeutet, dass es durch auf der Seite eingebettete Scripts aktiviert werden kann.
Weitere Informationen zur Registrierung für einen Ursprungstest von Drittanbietern
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 das für alle Iframes im gesamten untergeordneten Knoten, auch wenn kein anonymous
-Attribut vorhanden ist.
Sind Pop-ups, die über <iframe anonymous>
erstellt werden, auch anonym?
Pop-ups werden 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 plattformübergreifend isolieren
- 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