Ursprungsübergreifende Ressourcen, die von Drittanbietern bereitgestellt werden, enthalten häufig keine angemessenen CORP-Header. Wenn sie ohne Anmeldedaten angefordert werden können, können Sie die ursprungsübergreifende Isolierung jetzt aktivieren, indem Sie sie entsprechend kennzeichnen.
Der neue Wert der Cross-Origin Embedder-Richtlinie (COEP) wurde eingeführt
credentialless
, mit der der Browser ursprungsübergreifende Ressourcen laden kann, die
die Cross-Origin Resource Policy (CORP) nicht verwenden, indem Sie eine Anfrage ohne
Anmeldedaten wie Cookies. So können Entwickler ursprungsübergreifende
leichter zu isolieren.
Warum die ursprungsübergreifende Isolierung erforderlich ist
Einige Web-APIs erhöhen das Risiko von Side-Channel-Angriffen wie
Spectre Bis
dieses Risiko zu mindern, bieten Browser eine Opt-in-basierte isolierte Umgebung namens
ursprungsübergreifende Isolation an. Mit einer ursprungsübergreifenden
kann die Webseite privilegierte Funktionen nutzen, z. B.
SharedArrayBuffer
,
performance.measureUserAgentSpecificMemory()
und präzise Timer mit besserer Auflösung
während der Ursprung von anderen isoliert wird, sofern diese nicht aktiviert sind.
Die Webseite muss zwei HTTP-Header senden, um die ursprungsübergreifende Isolierung zu aktivieren:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Bei einem ursprungsübergreifend isolierten Status müssen alle ursprungsübergreifenden Ressourcen bereitgestellt werden
oder legen Sie einen Cross-Origin-Resource-Policy
-Header fest, der geladen werden soll.
Herausforderungen bei der Aktivierung der ursprungsübergreifenden Isolierung
Die ursprungsübergreifende Isolierung verbessert die Sicherheit von Webseiten und ermöglicht, leistungsstarke Funktionen zu ermöglichen, schwierig sein. Eine der größten Herausforderungen besteht darin, CORS oder CORP für alle ursprungsübergreifenden Ressourcen. Ressourcen ohne diese Header werden vom Browser nicht auf eine ursprungsübergreifend isolierte Seite.
Diese ursprungsübergreifenden Ressourcen werden in der Regel von Drittanbietern bereitgestellt, ist es nicht einfach, die erforderlichen Überschriften hinzuzufügen.
Aber was ist, wenn wir wissen, dass die Ressource sicher genug ist, um geladen zu werden? Die einzige Gefährdete Ressourcen werden mit Anmeldedaten angefordert, potenziell vertrauliche Informationen enthalten, die der Angreifer nicht gehören. Das bedeutet, dass Ressourcen, die ohne Anmeldedaten angefordert werden können, öffentlich sind. und kann geladen werden.
credentialless
zur Rettung
Hier kommt COEP: credentialless
ins Spiel. credentialless
ist ein neuer Wert
für den Cross-Origin-Embedder-Policy
-Header. Ähnlich wie bei require-corp
kann es
aktivieren Sie die ursprungsübergreifende Isolierung, aber es ist kein CORP:cross-origin
erforderlich.
-Header für ursprungsübergreifende Anfragen ohne COS. Diese werden stattdessen ohne
Anmeldedaten (z. B. Cookies).
Alternativ können Sie die ursprungsübergreifende Isolierung mit dem folgenden beiden Überschriften:
Cross-Origin-Embedder-Policy: credentialless
Cross-Origin-Opener-Policy: same-origin
Das bedeutet, dass der angeforderte ursprungsübergreifende Server nicht mit einem sensible Ressource ist und der Anforderer immer davon ausgehen kann, öffentlich zugängliche Informationen enthält.
Dies gilt auch für die Plan der schrittweisenden Einstellung von Drittanbieter-Cookies.
Demo
In dieser Demo können Sie verschiedene Header-Optionen ausprobieren: https://cross-origin-isolation.glitch.me
FAQ
Kann ich eine Anfrage mit Anmeldedaten in einer credentialless
-Umgebung senden?
Absolut, allerdings auf Kosten der Änderung des Anfragemodus, sodass eine CORS-Prüfung erforderlich ist.
auf die Antwort. Für HTML-Tags wie <audio>
, <img>
, <link>
, <script>
:
und <video>
, hängen Sie einfach crossorigin="use-credentials"
explizit an,
zum Senden von Anfragen
mit Anmeldedaten an den Browser.
Beispiel: Auch wenn ein Dokument auf https://www.example.com
Cross-Origin-Embedder-Policy: credentialless
-Header, <img
src="https://images.example.com/avatar.png" crossorigin="use-credentials">
macht Folgendes:
Anfrage mit Anmeldedaten senden.
Für die fetch()
API kann request.mode = 'cors'
verwendet werden.
Laut COEP: credentialless
ist COEP: require-corp
noch nützlich für meine Website?
Bei COEP: require-corp
müssen Sie den Anfragemodus nicht manuell auf
CORS, wenn Cookies für einige ursprungsübergreifende Unterressourcen benötigt werden.
Kann ich in einer credentialless
-Umgebung auch ursprungsübergreifende iFrames ohne spezielle Header laden?
Nein. Für das Laden ursprungsübergreifender iFrames in einer credentialless
-Umgebung sind weiterhin dieselben Bedingungen wie für require-corp
erforderlich. iFrame-Dokumente müssen mit zwei Headern bereitgestellt werden:
Cross-Origin-Embedder-Policy: credentialless
oderrequire-corp
Cross-Origin-Resource-Policy: cross-origin
Die gute Nachricht ist, dass derzeit derzeit diskutiert wird, wie ursprungsübergreifende iFrames ohne diese Header geladen werden können, indem iFrames crossorigin="anonymous"
angegeben werden.
Dadurch können ursprungsübergreifende iFrames ohne Header geladen werden,
Anmeldedaten.
Wird diese Funktion auch in anderen Browsern verfügbar sein?
- Firefox-Tracking-Problem
- WebKit-Anfrage für Position: Kein Signal
- W3C TAG Anfrage für Position: Ausstehend
Nächste Schritte
Es gibt zwei weitere Updates, um andere Herausforderungen ursprungsübergreifende Isolierung:
Personen, die sich aufgrund des folgenden Grundes für den Chrome-Ursprungstest zur Erweiterung der „SharedArrayBuffer“-Änderung registriert haben: für die oben genannten Hindernisse fragt sich vielleicht, wann es beendet wird. Ursprünglich haben wir angekündigt, dass sie in Chrome 96 beendet wird. Wir haben uns jedoch auf Chrome 106 verschieben.
Ressourcen
- Website „ursprungsübergreifend isoliert“ gestalten mit COOP und COEP
- Warum Sie „ursprungsübergreifend isoliert“ benötigen für leistungsstarke Funktionen
- Leitfaden zum Aktivieren der ursprungsübergreifenden Isolierung
- Updates für „SharedArrayBuffer“ in Chrome 88 für Android und in Chrome 92 für Computer
Foto von Martin Adams am Unsplash