Das SameSite Cookie-Attribut ist eine Sicherheitseigenschaft von HTTP-Cookies, die steuert, ob ein Cookie bei webseitenübergreifenden Anfragen mitgesendet wird. Es wurde eingeführt, um Cross-Site-Request-Forgery-Angriffe (CSRF) zu erschweren und den unbeabsichtigten Abfluss von Nutzerdaten an Drittseiten zu verhindern. Seit Februar 2020 behandeln Chromium-basierte Browser Cookies ohne explizites SameSite-Attribut standardmäßig als „Lax".
Das SameSite-Attribut kennt drei mögliche Werte, die jeweils ein unterschiedliches Sicherheitsniveau bieten:
Bei einem CSRF-Angriff bringt eine bösartige Website den Browser eines angemeldeten Nutzers dazu, eine Anfrage an eine andere Website zu senden – etwa ein Formular abzuschicken oder eine Aktion auszulösen. Ohne SameSite-Schutz würde der Browser dabei automatisch die Cookies der Zielwebsite mitsenden, sodass die Anfrage als authentifiziert gilt.
Das SameSite-Attribut verhindert dies, indem es festlegt, dass Cookies bei Cross-Site-Anfragen je nach eingestelltem Wert gar nicht oder nur eingeschränkt übertragen werden. Mit dem Wert „Strict" werden Cookies bei keiner Cross-Site-Anfrage mitgesendet, mit „Lax" nur bei sicheren Top-Level-Navigationen.
Google Chrome hat mit Version 80 im Februar 2020 eine wesentliche Änderung eingeführt: Cookies ohne explizites SameSite-Attribut werden seitdem automatisch als „Lax" behandelt. Zuvor war das Standardverhalten „None", was bedeutete, dass Cookies uneingeschränkt an Drittseiten gesendet wurden.
Diese Änderung wurde schrittweise auch von anderen Browsern übernommen. Microsoft Edge, Opera und weitere Chromium-basierte Browser folgten zeitnah. Firefox und Safari haben eigene Mechanismen zum Schutz vor Cross-Site-Tracking implementiert, die in eine ähnliche Richtung wirken.
Für Webentwickler bedeutet diese Änderung, dass sie das SameSite-Attribut bewusst setzen sollten, statt sich auf das Standardverhalten zu verlassen. Insbesondere Cookies, die webseitenübergreifend funktionieren müssen, erfordern ein explizites SameSite=None; Secure.
Das Attribut wird beim Setzen eines Cookies im HTTP-Header angegeben. In PHP sieht das beispielsweise so aus:
Set-Cookie: session=abc123; SameSite=Lax; Secure; HttpOnly
In PHP ab Version 7.3 kann das Attribut direkt über die Funktion setcookie() mit dem Options-Array gesetzt werden. In älteren PHP-Versionen muss der Header manuell gesetzt werden. Wichtig ist, dass das SameSite-Attribut immer in Kombination mit weiteren Sicherheitsattributen wie Secure und HttpOnly verwendet wird, um einen umfassenden Schutz zu gewährleisten.
Das SameSite-Attribut ist Teil eines mehrstufigen Sicherheitskonzepts für Cookies:
Erst die Kombination aller drei Attribute bietet einen robusten Schutz für Session-Cookies und andere sicherheitsrelevante Daten. Webseitenbetreiber sollten diese Attribute bei jeder Cookie-Konfiguration berücksichtigen, um die Sicherheit ihrer Webanwendung zu maximieren.
Die bereitgestellten Informationen dienen ausschließlich der allgemeinen Orientierung. Für Richtigkeit, Vollständigkeit und Aktualität wird keine Gewähr übernommen. Die Inhalte sind nicht rechtsverbindlich und nicht Bestandteil einer Leistungsbeschreibung.