Ab Chrome 135 können Sie den neuen sandbox
-Wert verwenden:
allow-same-site-none-cookies
. Wenn diese Richtlinie angegeben ist und keine Drittanbieter-Cookies verfügbar sind, sendet der Browser nur SameSite=None
-Cookies in HTTP-Anfragen, die von sandboxed-Iframes von Erstanbietern stammen.
Was ist ein iframe in einer Sandbox?
Sandbox-Iframes sind Iframes mit speziellen Einschränkungen. Sie werden als null
, also als nicht transparent, behandelt. Potenziell schädliche Funktionen wie Scripts, Formulare und Pop-ups sind in iFrames mit Sandbox standardmäßig nicht verfügbar.
Mit dem sandbox
-Attribut können Sie angeben, welche Funktionen ein Iframe in einer Sandbox haben sollte. Beispiel:
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
Sandboxing ist immer eine gute Idee, da Sie damit die Berechtigungen genau auswählen können, die für das Laden eingebetteter Inhalte erforderlich sind, und gleichzeitig den Umfang potenzieller Exploits einschränken.
Warum ist diese neue Richtlinie erforderlich?
Vor der Einführung von allow-same-site-none-cookies
konnten Sie zwei Cookie-Szenarien in einem iFrame mit Sandbox konfigurieren:
- Ohne das
allow-same-origin
-Token imsandbox
-Attribut wird die Quelle des Iframes alsnull
serialisiert, wodurch alle Anfragen von der Seite im Sandbox-Modus websiteübergreifend werden. In diesem Fall werden nur Cookies mitSameSite=None
in Anfragen eingeschlossen. - Wenn das
allow-same-origin
-Token imsandbox
-Attribut enthalten ist, werden Anfragen als vom tatsächlichen Ursprung des Iframes stammend behandelt. So können Cookies mit beliebigenSameSite
-Werten gesendet werden.
Wenn Drittanbieter-Cookies blockiert sind, kann ein iframe in der Sandbox ohne allow-same-origin
keine Cookies senden, es sei denn, Sie aktivieren allow-same-site-none-cookies
.
In einem iFrame mit allow-same-origin
können weiterhin Cookies in Anfragen auf derselben Website enthalten sein, auch wenn Drittanbieter-Cookies blockiert sind. Allerdings wäre der Cookie-Jar des gesamten Ursprungs potenziellen schädlichen Webaktivitäten ausgesetzt.
Mit allow-same-site-none-cookies
kann ein Iframe SameSite=None
-Cookies in HTTP-Anfragen senden, während potenziell sensible SameSite=Strict
- und SameSite=Lax
-Cookies nicht enthalten sind.
Praktisches Beispiel
Angenommen, es gibt eine Website namens practice-coding.example
, auf der Nutzer benutzerdefinierte Codierungsprojekte erstellen und ausführen sowie den Code anderer Nutzer einbetten können. Um den Dienst nutzen zu können, müssen sich die Nutzer anmelden. Dadurch wird ein SameSite=Strict
-Sitzungscookie gesetzt.
Ein anderer Nutzer erstellt das Projekt practice-coding.example/cookie-theft
, das andere Nutzer unwissentlich als Iframe in ihre Projekte einbetten können. Wenn SameSite=Strict
- und SameSite=Lax
-Cookies für den practice-coding.example/cookie-theft
-Iframe freigegeben sind, kann der böswillige Nutzer die Sitzungscookies anderer Nutzer stehlen.
In diesem Fall kann der Websiteinhaber den Zugriff auf potenziell sensible Cookies einschränken. Möglicherweise möchten Sie jedoch weiterhin SameSite=None
-Cookies in sandboxed iFrames zulassen. Beispielsweise benötigen practice-coding.example/coding-interview
-Sandbox-Iframes möglicherweise SameSite=None
-Cookies, damit Bewerber ihren Code noch einmal aufrufen können.
allow-same-site-none-cookies
verhindert, dass der gesamte Cookie-Jar freigegeben wird, während die erforderlichen SameSite=None
-Cookies selektiv zugelassen werden.
Wie kann ich nur SameSite=None
in Sandbox-Frames von Erstanbietern zulassen?
Wenn Sie SameSite=None
-Cookies in Anfragen von Seiten mit Sandbox-Daten von Drittanbietern aktivieren möchten, geben Sie das allow-same-site-none-cookies
-Token im Iframe-Tag an. Beispiel:
<iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>
Sie können auch eine allow-same-site-none-cookies
-Richtlinie mit einem Content-Security-Policy
-HTTP-Header festlegen:
Content-Security-Policy: sandbox allow-same-site-none-cookies;
Probieren Sie es selbst mit unserer Demo aus.
Feedback geben und erhalten
Wenn Sie Feedback geben oder Probleme melden möchten, können Sie ein Problem melden oder an der Diskussion auf GitHub teilnehmen.