SameSite = Lax standardmäßig - bereits in Chrome 80 stabil (allerdings noch nicht für alle)

Neulich hat eine aufmerksame Kollegin (danke, Lena) einen seltsamen Fehler gemeldet - der Server hat normalerweise ein Cookie im Browser gesetzt, aber es ist nicht zurückgekommen. Am Tag zuvor hat alles funktioniert, aber jetzt wurde der Cookie gesetzt, aber nach ein paar Sekunden verschwand er auf magische Weise (obwohl er 24 Stunden dauern sollte). Es wurde nur von wenigen Leuten im Team und nur im neuen Chrome 80 reproduziert, aber der Rest in Chrome hatte genau die gleiche Version, alles war in Ordnung. In anderen Browsern funktionierte alles wie eine Uhr. Mystiker. Sie begannen es herauszufinden, und nach einiger Zeit bemerkte die Chrome-Konsole eine Warnung für den Antwortheader, in dem das Cookie gesetzt wurde:
A cookie associated with a cross-site resource at _your_domain_ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`.

Sie begannen zu studieren, was es war, und allmählich wurde klar, wie der Fehler auftrat und warum nicht jeder es zeigte. Da unser Service Anfragen aus verschiedenen Domänen verarbeiten muss, ist dies SameSitenur unser Fall. Sie fügten hinzu SameSite=None; Secureund das Problem wurde für uns gelöst.

Warum so?


Nach dem HTTP-Standard hat der Browser zunächst Cookies (oder nur Cookies) für jede Anfrage an die entsprechende Domain gesendet . Dies eröffnete Möglichkeiten für einen CSRF-Angriff, der es skrupellosen Personen unter bestimmten Umständen ermöglichte, unter dem Deckmantel ahnungsloser Glaubwürdigkeit Zugang zu einigen Ressourcen zu erhalten, indem sie nur ihre Cookies verwendeten.

2016 wurde ein Attribut eingeführt SameSite, mit dem Sie steuern können, ob der Browser Cookies sendet, wenn die Seite eine Anfrage an eine andere Domain sendet. Die Entwickler haben die Möglichkeit, die Übertragung ihrer Cookies zu blockieren, wenn die Anfrage von einer Website eines Drittanbieters ausgeführt wird. Dazu musste das Attribut SameSiteexplizit auf Strict gesetzt werden.(Cookies werden nur auf Anfrage und Übergänge von der Domain übertragen, zu der sie gehören) oder Lax (Cookies werden beim Übergang von anderen Websites über einen direkten Link auf die Website übertragen, jedoch nicht auf andere Anfragen von ihnen, beispielsweise wenn eine AJAX-Anfrage gestellt oder Bilder geladen werden ) Die Abwesenheit SameSitewar gleichwertig SameSite=None, dh standardmäßig wurden auf Anfrage immer noch Cookies übertragen.

Im Mai 2019 kündigten Google Chrome-Entwickler an, dieses Verhalten schrittweise zu ändern und das Fehlen von SameSite als SameSite=Lax(mehr hier) zu interpretieren) Das heißt, standardmäßig blockiert der Browser die Übertragung von Cookies für Anfragen von der aktuellen Seite an andere Ressourcen, außer für direkte Klicks auf den Link. Die Entwickler von Firefox und Edge haben angekündigt, dass sie diese Änderung im Laufe der Zeit auch in ihren Browsern implementieren werden.

Für Benutzer ist dieses Browserverhalten sicherer. Entwickler von Websites und Webdiensten müssen berücksichtigen, dass sie ihre Cookie-Attribute explizit festlegen müssen, wenn sie ihre Cookies weiterhin erhalten müssen, wenn sie von anderen Websites angefordert werden SameSite=None, Secure( Secureda eine solche Anforderung außerdem nur über einen sicheren Kanal an den Server gesendet werden sollte )

Da die Innovation den aktuellen Standard ändert und nicht alle Standorte sich schnell anpassen können, erfolgt der Übergang zu einem neuen Verhalten schrittweise. Ursprünglich war es für eine begrenzte Anzahl von Chrome Beta-Nutzern aktiviert, und jetzt steigt ihre Anzahl allmählich an. Aktuelle Informationen finden Sie hier . Der neueste Eintrag auf dem Link:
Letzte Aktualisierung am 9. März 2020.

Wir haben damit begonnen, das neue Verhalten für Chrome 80 Stable durchzusetzen, nur nicht für 100% der Nutzer. Der kontrollierte Rollout ist auf eine begrenzte Grundgesamtheit beschränkt.
Das heißt, die Beta-Testphase ist vorbei und Chrome-Entwickler haben begonnen, langsam neue Funktionen für normale Benutzer bereitzustellen. Was im Prinzip gut ist, da es wirklich sicherer ist.

Sie können das alte Verhalten über die Einstellungen wiederherstellen : Geben Sie in der Chrome-Adressleiste ein chrome://flags, gehen Sie zur Seite, suchen Sie das Element SameSite als Standard-Cookies und setzen Sie es auf Deaktiviert . Dies ist jedoch besser zum Testen geeignet als für normale Benutzer. Wenn auf Ihrem Chrome 80 immer noch das alte Verhalten ausgeführt wird, können Sie die neue Funktionalität erzwingen, indem Sie dieselbe Einstellung auf Aktiviert setzen .

Wenn Ihre Website auf Anfrage von verschiedenen Domains Cookies erhalten muss, sollten Sie daher auf die bevorstehenden Änderungen vorbereitet sein (und wer auch immer bereit ist, ist dafür gut). Gut zu allen!

Hinzugefügt von:
xdenserIn den Kommentaren wird darauf hingewiesen, dass einige ältere Browserversionen SameSite=Nonesolche Cookies nicht unterstützen , sie überhaupt nicht akzeptieren oder auf nicht standardmäßige Weise verarbeiten. Darunter befinden sich Browser für Desktops und mobile Geräte. Die Seite https://www.chromium.org/updates/same-site/incompatible-clients bietet eine Liste von Browsern und eine mögliche Lösung des Problems (in Pseudocode, aber ziemlich detailliert). Die Autoren schlagen vor, problematische Versionen von Browsern anhand des Titels zu erkennen useragentund das Cookie-Attribut SameSite=Noneüberhaupt nicht festzulegen .

Hinzugefügt 2:
Im Zusammenhang mit der Situation mit COVID-19 setzt Google ab dem 3. April 2020 die Implementierung der beschriebenen Änderungen in der Verarbeitung von SameSite vorübergehend aus, um den reibungslosen Betrieb von Internetdiensten sicherzustellen. Auf Geräten, auf denen Änderungen bereits angewendet wurden, werden sie abgebrochen.
(c) blog.chromium.org/2020/04/temporARY-rolling-back-samesite.html

Quellen:
web.dev/samesite-cookies-explained
www.chromium.org/updates/same-site
www.chromestatus.com/ feature / 5088147346030592
www.chromium.org/updates/same-site/incompatible-clients
blog.chromium.org/2020/04/temporically-rolling-back-samesite.html

All Articles