Jedes Cookie enthält ein Schlüssel/Wert-Paar sowie eine Reihe von Attributen, die steuern, wann und wo dieses Cookie verwendet wird.
Mit der Einführung des Attributs SameSite
(in RFC6265bis definiert) können Sie angeben, ob Ihr Cookie auf einen Erstanbieter-Kontext oder den Kontext derselben Website beschränkt ist. Es ist hilfreich, genau zu verstehen, was „Website“ hier bedeutet.
Die Website ist die Kombination aus dem Domain-Suffix und dem Teil der Domain unmittelbar davor. Die Domain www.web.dev
ist beispielsweise Teil der Website web.dev
.
Schlüsselbegriff: Wenn der Nutzer www.web.dev
verwendet und ein Bild von static.web.dev
anfordert, handelt es sich um eine Anfrage vom Typ Same-Site.
In der öffentlichen Suffixliste ist festgelegt, welche Seiten als zu derselben Website gehören. Dies hängt nicht nur von Top-Level-Domains wie .com
ab, sondern kann auch Dienste wie github.io
umfassen. Dadurch können your-project.github.io
und my-project.github.io
als separate Websites gezählt werden.
Schlüsselbegriff: Wenn der Nutzer your-project.github.io
verwendet und ein Bild von my-project.github.io
anfordert, ist es eine websiteübergreifende Anfrage.
Verwenden Sie das Attribut SameSite
, um die Verwendung von Cookies anzugeben
Das Attribut SameSite
für Cookies bietet drei verschiedene Möglichkeiten, dieses Verhalten zu steuern. Sie können das Attribut nicht angeben oder Strict
oder Lax
verwenden, um das Cookie auf Anfragen derselben Website zu beschränken.
Wenn Sie SameSite
auf Strict
setzen, kann das Cookie nur in selbst erhobenen Daten gesendet werden, d. h., wenn die Website für das Cookie mit der Website übereinstimmt, die in der Adressleiste des Browsers angezeigt wird. Wenn das promo_shown
-Cookie so gesetzt ist:
Set-Cookie: promo_shown=1; SameSite=Strict
Wenn der Nutzer Ihre Website besucht, wird das Cookie wie erwartet zusammen mit der Anfrage gesendet.
Folgt der Nutzer jedoch einem Link von einer anderen zu Ihrer Website, wird das Cookie nicht bei dieser ersten Anfrage gesendet.
Sie eignet sich für Cookies für Funktionen, die immer hinter einer anfänglichen Navigation stehen, z. B. zum Ändern eines Passworts oder zum Durchführen eines Kaufs. Für ein Cookie wie promo_shown
ist es jedoch zu restriktiv. Wenn deine Leser dem Link zur Website folgen, möchten sie, dass das Cookie gesendet wird, damit ihre Präferenz angewendet werden kann.
SameSite=Lax
ermöglicht dem Browser, das Cookie mit diesen Navigationen der obersten Ebene zu senden. Wenn eine andere Website beispielsweise auf den Inhalt Ihrer Website verweist, in diesem Fall durch die Verwendung Ihres Katzenfotos und die Angabe eines Links zu Ihrem Artikel:
<p>Look at this amazing cat!</p>
<img src="https://blog.example/blog/img/amazing-cat.png" />
<p>Read the <a href="https://blog.example/blog/cat.html">article</a>.</p>
Mit einem Cookie, das auf Lax
gesetzt ist, so:
Set-Cookie: promo_shown=1; SameSite=Lax
Wenn der Browser amazing-cat.png
für den Blog der anderen Person anfordert, sendet Ihre Website das Cookie nicht. Wenn der Leser jedoch dem Link zu cat.html
auf deiner Website folgt, enthält diese Anfrage das Cookie.
Wir empfehlen, SameSite
auf diese Weise zu verwenden. Setzen Sie Cookies, die sich auf die Anzeige von Websites auswirken, auf Lax
und Cookies im Zusammenhang mit Nutzeraktionen auf Strict
.
Sie können auch SameSite
auf None
setzen, um anzugeben, dass das Cookie in allen Kontexten gesendet werden soll. Wenn du einen Dienst anbietest, den andere Websites nutzen, z. B. Widgets, eingebettete Inhalte, Affiliate-Programme, Werbung oder die Anmeldung über mehrere Websites hinweg, verwende None
, um deine Absicht deutlich zu machen.
![Drei Cookies, die je nach Kontext mit „Keine“, „Lax“ oder „Strikt“ gekennzeichnet sind](https://web.developers.google.cn/static/articles/samesite-cookies-explained/image/three-cookies-labelled-no-495f9afccf1cd.png?authuser=9&hl=de)
None
, Lax
oder Strict
.
Änderungen am Standardverhalten ohne SameSite
Unterstützte Browser
- 80
- 86
- x
Das Attribut SameSite
wird weitreichend unterstützt, hat sich aber kaum durchgesetzt.
In der Vergangenheit wurden Cookies ohne SameSite
standardmäßig in allen Kontexten gesendet. Das macht die Nutzer anfälliger für CSRF und unbeabsichtigtes Datenleck. Damit Entwickler ihre Absichten mitteilen und Nutzer sicherer machen können, werden im IETF-Vorschlag Inkrementelle Better Cookies zwei wichtige Änderungen erläutert:
- Cookies ohne
SameSite
-Attribut werden wieSameSite=Lax
behandelt. - Cookies mit
SameSite=None
müssen auchSecure
angeben. Sie erfordern also einen sicheren Kontext.
Beide Änderungen sind abwärtskompatibel mit Browsern, die die vorherige Version des SameSite
-Attributs korrekt implementiert haben, sowie mit Browsern, die ältere SameSite
-Versionen nicht unterstützen. Sie sollen die Abhängigkeit vom Standardverhalten der Browser reduzieren, indem sie das Cookie-Verhalten und die beabsichtigte Verwendung explizit festlegen. Alle Clients, die SameSite=None
nicht erkennen, sollten ihn ignorieren.
Standardmäßig SameSite=Lax
Wenn Sie ein Cookie senden, ohne das Attribut SameSite
anzugeben, behandelt der Browser dieses Cookie so, als wäre es auf SameSite=Lax
gesetzt. Wir empfehlen dennoch, SameSite=Lax
explizit festzulegen, um die Nutzererfahrung in allen Browsern einheitlicher zu gestalten.
SameSite=None
muss sicher sein
Wenn Sie websiteübergreifende Cookies mit SameSite=None
erstellen, müssen Sie sie auch auf Secure
setzen, damit der Browser sie akzeptiert:
Set-Cookie: widget_session=abc123; SameSite=None; Secure
Du kannst dieses Verhalten ab Chrome 76 testen, indem du about://flags/#cookies-without-same-site-must-be-secure
aktivierst, oder in Firefox 69, indem du network.cookie.sameSite.noneRequiresSecure
in about:config
festlegst.
Wir empfehlen außerdem, vorhandene Cookies so schnell wie möglich auf Secure
zu aktualisieren.
Wenn Sie auf Dienste angewiesen sind, die Inhalte von Drittanbietern auf Ihrer Website bereitstellen, sollten Sie darauf achten, dass Ihr Dienstanbieter seine Cookies aktualisiert und alle Snippets oder Abhängigkeiten auf Ihrer Website entsprechend aktualisiert, um sicherzustellen, dass das neue Verhalten verwendet wird.
SameSite
Keksrezepte
Weitere Informationen zum Aktualisieren Ihrer Cookies, damit diese Änderungen an SameSite=None
erfolgreich verarbeitet werden können, und zu den Unterschieden im Browserverhalten finden Sie im nachfolgenden Artikel SameSite-Cookie-Rezepte.
Vielen Dank für die Beiträge und das Feedback von Lily Chen, Malte Ubl, Mike West, Rob Dodson, Tom Steiner und Vivek Sekhar.
Cookie-Hero-Image von Pille-Riin Priske auf Unsplash