Ab Chrome 135 können Sie den neuen Wert sandbox
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 Erstanbieter-Sandbox-iFrames stammen.
Was ist ein Sandboxed-iFrame?
Sandboxed iframes sind iframes mit besonderen Einschränkungen. Sie werden als null
mit einem nicht transparenten Ursprung behandelt. Standardmäßig sind potenziell schädliche Funktionen wie Skripts, Formulare und Pop-ups in iFrames, die in einer Sandbox ausgeführt werden, nicht verfügbar.
Mit dem Attribut sandbox
können Sie festlegen, welche Funktionen in einem Sandbox-Iframe verfügbar sein sollen. Beispiel:
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
Sandboxing ist immer eine gute Idee, da Sie damit die Berechtigungen, die für das erfolgreiche Laden eingebetteter Inhalte erforderlich sind, detailliert auswählen und gleichzeitig das Risiko potenzieller Exploits begrenzen können.
Warum benötigen wir diese neue Richtlinie?
Vor der Einführung von allow-same-site-none-cookies
konnten Sie zwei Cookie-Szenarien in einem Sandboxed-iFrame konfigurieren:
- Ohne das Token
allow-same-origin
im Attributsandbox
wird die Quelle des Iframes alsnull
serialisiert. Dadurch sind alle Anfragen von der Sandbox-Seite websiteübergreifend. In diesem Fall werden nur Cookies mitSameSite=None
in Anfragen berücksichtigt. - Mit dem
allow-same-origin
-Token im Attributsandbox
werden Anfragen so behandelt, als würden sie vom tatsächlichen Ursprung des Iframes stammen. So können Cookies mit einem beliebigenSameSite
-Wert gesendet werden.
Wenn Drittanbieter-Cookies blockiert sind, kann ein Sandboxed-iFrame ohne allow-same-origin
keine Cookies senden, es sei denn, Sie aktivieren allow-same-site-none-cookies
.
Ein iFrame mit allow-same-origin
kann weiterhin Cookies in Same-Site-Anfragen einfügen, auch wenn Drittanbieter-Cookies blockiert sind. Der gesamte Cookie-Speicher des Ursprungs wäre jedoch potenziell 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
Stellen Sie sich eine Website, practice-coding.example
, vor, auf der Nutzer benutzerdefinierte Codierungsprojekte erstellen und ausführen und den Code anderer Nutzer einbetten können. Um den Dienst nutzen zu können, müssen sich Nutzer anmelden. Dadurch wird ein SameSite=Strict
-Sitzungscookie gesetzt.
Ein anderer Nutzer erstellt ein Projekt namens practice-coding.example/cookie-theft
, das andere Nutzer unwissentlich als iFrame in ihre Projekte einbetten können. Wenn die Cookies SameSite=Strict
und SameSite=Lax
für den practice-coding.example/cookie-theft
-iFrame verfügbar sind, kann der böswillige Nutzer die Sitzungscookies anderer Nutzer stehlen.
In diesem Szenario möchte der Websiteinhaber möglicherweise den Zugriff auf potenziell vertrauliche Cookies einschränken. Möglicherweise möchten sie jedoch weiterhin SameSite=None
-Cookies in Sandboxed-iFrames zulassen. Beispiel: Für ein practice-coding.example/coding-interview
-Sandbox-Iframe sind möglicherweise SameSite=None
-Cookies erforderlich, damit Kandidaten ihren Code noch einmal aufrufen können.
allow-same-site-none-cookies
verhindert, dass der gesamte Cookie-Speicher offengelegt wird, während die erforderlichen SameSite=None
-Cookies selektiv zugelassen werden.
Wie erlaube ich nur SameSite=None
in eigenen Sandbox-Frames?
Wenn Sie SameSite=None
-Cookies in Anfragen von eigenen Sandbox-Seiten 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;
Feedback geben
Melden Sie ein Problem, um Feedback zu geben oder Probleme zu melden, oder beteiligen Sie sich an der Diskussion auf GitHub.