Browser Support
Jedes Cookie enthält ein Schlüssel/Wert-Paar sowie eine Reihe von Attributen, die steuern, wann und wo das Cookie verwendet wird.
Mit der Einführung des SameSite-Attributs (definiert in
RFC6265bis)
können Sie deklarieren, ob Ihr Cookie auf einen Erstanbieter- oder
Same-Site-Kontext beschränkt ist. Es ist hilfreich, genau zu verstehen, was hier mit „Website“ gemeint ist.
Die Website ist die Kombination aus dem Domainsuffix und dem Teil der Domain direkt davor. Die Domain www.web.dev ist beispielsweise Teil der Website web.dev.
Wichtiger Begriff: Wenn sich der Nutzer auf www.web.dev befindet und ein Bild von static.web.dev anfordert, handelt es sich um eine Same-Site-Anfrage.
In der Liste der öffentlichen Suffixe wird definiert, welche Seiten als
auf derselben Website gelten. Das hängt nicht nur von Top-Level-Domains wie .com ab, sondern kann auch Dienste wie github.io umfassen. So können your-project.github.io und my-project.github.io als separate Websites gelten.
Wichtiger Begriff: Wenn sich der Nutzer auf your-project.github.io befindet und ein Bild von my-project.github.io anfordert, handelt es sich um eine websiteübergreifende Anfrage.
Cookie-Nutzung mit dem SameSite-Attribut deklarieren
Das SameSite-Attribut für ein Cookie 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 Same-Site-Anfragen zu beschränken.
Wenn Sie SameSite auf Strict setzen, kann Ihr Cookie nur in einem Erstanbieterkontext gesendet werden. Das ist der Fall, wenn die Website für das Cookie mit der Website übereinstimmt, die in der Adressleiste des Browsers angezeigt wird. Wenn das Cookie promo_shown also so festgelegt ist:
Set-Cookie: promo_shown=1; SameSite=Strict
Wenn sich der Nutzer auf Ihrer Website befindet, wird das Cookie wie erwartet mit der Anfrage gesendet.
Wenn der Nutzer jedoch über einen Link von einer anderen Website auf Ihre Website gelangt, wird das Cookie bei dieser ersten Anfrage nicht gesendet.
Das ist gut für Cookies, die sich auf Funktionen beziehen, die immer hinter einer ersten Navigation stehen, z. B. das Ändern eines Passworts oder das Ausführen eines Kaufs. Für ein Cookie wie promo_shown ist es jedoch zu restriktiv. Wenn Ihr Leser dem Link zur Website folgt, soll das Cookie gesendet werden, damit seine Einstellung angewendet werden kann.
Mit SameSite=Lax kann der Browser das Cookie mit diesen Navigationen der obersten Ebene senden. Wenn beispielsweise eine andere Website auf die Inhalte Ihrer Website verweist, in diesem Fall durch Verwendung Ihres Katzenfotos und einen Link zu Ihrem Artikel, wie folgt:
<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 wie folgt auf Lax gesetzt ist:
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 Ihrer Website folgt, enthält diese Anfrage das Cookie.
Wir empfehlen, SameSite auf diese Weise zu verwenden, Cookies, die die Websiteanzeige beeinflussen, auf Lax und Cookies im Zusammenhang mit Nutzeraktionen auf Strict zu setzen.
Sie können SameSite auch auf None setzen, um anzugeben, dass das Cookie in allen Kontexten gesendet werden soll. Wenn Sie einen Dienst anbieten, der von anderen Websites genutzt wird, z. B. Widgets, eingebettete Inhalte, Affiliate-Programme, Werbung oder Anmeldungen auf mehreren Websites, verwenden Sie None, damit Ihre Absicht klar ist.
None, Lax oder Strict.
Änderungen am Standardverhalten ohne SameSite
Browser Support
Das SameSite-Attribut wird weitgehend unterstützt, aber nicht weit verbreitet.
In der Vergangenheit wurden Cookies ohne SameSite standardmäßig in allen Kontexten gesendet, wodurch Nutzer anfällig für CSRF und unbeabsichtigte Informationslecks sind. Um Entwickler zu ermutigen, ihre Absicht anzugeben
und Nutzern eine sicherere Erfahrung zu bieten, werden im IETF-Vorschlag
Incrementally Better Cookies
zwei wichtige Änderungen vorgeschlagen:
- Cookies ohne ein
SameSite-Attribut werden alsSameSite=Laxbehandelt. - Für Cookies mit
SameSite=Nonemuss auchSecureangegeben werden. Das bedeutet, dass sie einen sicheren Kontext erfordern.
Beide Änderungen sind abwärtskompatibel mit Browsern, die die vorherige Version des SameSite-Attributs korrekt implementiert haben, sowie mit Browsern, die frühere SameSite-Versionen nicht unterstützen. Sie sollen die Abhängigkeit von Entwicklern vom Standardverhalten von Browsern verringern, indem das Cookie-Verhalten und die beabsichtigte Verwendung explizit gemacht werden. Alle Clients, die SameSite=None nicht erkennen, sollten es ignorieren.
SameSite=Lax als Standard
Wenn Sie ein Cookie senden, ohne das SameSite-Attribut anzugeben, behandelt der Browser
dieses Cookie so, als wäre es auf SameSite=Lax gesetzt. Wir empfehlen weiterhin, 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
Sie können dieses Verhalten ab Chrome 76 testen, indem Sie
about://flags/#cookies-without-same-site-must-be-secure aktivieren, und ab Firefox 69
durch Festlegen von network.cookie.sameSite.noneRequiresSecure in
about:config.
Wir empfehlen außerdem, vorhandene Cookies so schnell wie möglich auf Secure zu aktualisieren.
Wenn Sie Dienste verwenden, die Drittanbieterinhalte auf Ihrer Website bereitstellen, müssen Sie Ihren Dienstanbieter bitten, seine Cookies zu aktualisieren. Aktualisieren Sie außerdem alle Snippets oder Abhängigkeiten auf Ihrer Website, damit das neue Verhalten verwendet wird.
Rezepte für SameSite-Cookies
Weitere Informationen zum Aktualisieren Ihrer Cookies, damit diese
Änderungen an SameSite=None und die Unterschiede im Browserverhalten berücksichtigt werden, finden Sie im
Folgeartikel Rezepte für SameSite-Cookies.
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-Bild von Pille-Riin Priske auf Unsplash