Entwickler, die COEP verwenden, können jetzt Drittanbieter-iFrames einbetten, die COEP nicht selbst verwenden.
Warum wir COEP brauchen
Einige Web-APIs erhöhen das Risiko von Seitenkanalangriffen wie Spectre. Um dieses Risiko zu verringern, bieten Browser eine isolierte, auf Opt-in-Basis basierende Umgebung namens ursprungsübergreifende Isolierung, für die unter anderem COEP erforderlich ist. Dadurch können Websites privilegierte Features wie SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
und hochpräzise Timer mit besserer Auflösung verwenden.
Um die ursprungsübergreifende Isolierung 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 ursprungsübergreifende Isolierung bietet Webseiten mehr Sicherheit und bietet 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 vom Browser nicht geladen.
Die iFrames werden normalerweise von einem Drittanbieter bereitgestellt, für den die COEP-Bereitstellung möglicherweise nicht einfach ist.
Anonymer iFrame zur Lösung
Hier kommt der anonyme iFrame ins Spiel. Durch Hinzufügen des anonymous
-Attributs zum <iframe>
-Element wird der iFrame aus einer anderen sitzungsspezifischen Speicherpartition geladen und unterliegt keinen COEP-Einschränkungen mehr.
Beispiel:
<iframe anonymous src="https://example.com">
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. Sie beginnt mit einem leeren
Cookie-Speicher. Ebenso laden und speichern Speicher-APIs wie LocalStorage
, CacheStorage
, IndexedDB
usw. Daten in die neue sitzungsspezifische Partition. Die Partition bezieht sich auf das aktuelle Dokument der obersten Ebene und den Ursprung des iFrame. Der Speicherplatz wird gelöscht, sobald das Dokument der obersten Ebene entladen wurde.
Anonyme iFrames unterliegen nicht den COEP-Einbettungsregeln. Dies ist weiterhin sicher, da sie jedes Mal aus einem neuen leeren Kontext geladen werden. Sie werden geladen, ohne dass ihre Daten personalisiert werden. Sie enthalten ausschließlich öffentliche Daten, die für einen Angreifer keinen Wert haben.
Demo
Einen anonymen iFrame finden Sie unter https://anonymous-iframe.glitch.me/
Für einen Ursprungstest registrieren
Damit anonyme iFrames Entwickler bei der Einführung der ursprungsübergreifenden Isolierung unterstützen, stellen wir sie in Chrome von Version 106 bis 108 als Ursprungstest zur Verfügung.
Registrieren Sie sich für den Ursprungstest, damit anonyme iFrames auf Ihrer Website verwendet werden können:
- Fordern Sie ein Token für Ihren Ursprung an.
- Verwenden Sie das Token auf eine der folgenden Arten:
- Im HTML-Code:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- Im JavaScript:
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
- Im HTML-Code:
- Füge deiner Seite einen anonymen iFrame hinzu:
html <iframe anonymous src="https://example.com">
Wenn Sie Feedback zu dieser Funktion haben, können Sie ein Problem im GitHub-Repository melden.
Ursprungstest eines Drittanbieters
Der Ursprungstest ist auch für Skripts von Drittanbietern verfügbar. Es kann also durch Skripts aktiviert werden, die auf der Seite eingebettet sind.
Weitere Informationen zur Registrierung für einen Drittanbieter-Ursprungstest.
Häufig gestellte Fragen
Wird diese Funktion auch in anderen Browsern eingeführt?
- Mozilla-Anfrage für Position: Ausstehend
- WebKit-Anfrage für Position: Kein Signal
- W3C-TAG-Anfrage für Position: zufrieden
Sind iFrames in <iframe anonymous>
anonym verschachtelt?
Ja. Sie wird übernommen. Wenn ein iFrame anonym ist, gilt dies für alle iFrames in der gesamten Unterstruktur, auch ohne das Attribut anonymous
.
Werden Pop-ups von <iframe anonymous>
auch anonym erstellt?
Pop-ups werden geöffnet, als ob noopener
festgelegt wäre. Sie werden auf der Grundlage eines neuen regulären Kontexts 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 „ursprungsübergreifend“ für leistungsstarke Funktionen benötigen
- Leitfaden zum Aktivieren der ursprungsübergreifenden Isolierung
- SharedArrayBuffer-Updates in Android 88 und Chrome 92 für Computer
- Ursprungsübergreifende Ressourcen ohne CORP-Header mit
COEP: credentialless
laden