Hier erfahren Sie, wie Sie eigene Cookies setzen, um für Sicherheit und browserübergreifende Kompatibilität zu sorgen und das Risiko eines Fehlers nach der Einstellung von Drittanbieter-Cookies zu minimieren.
Je nach Kontext des Nutzers können Cookies eigene oder Drittanbieter-Cookies sein, je nachdem, auf welcher Website der Nutzer sich gerade befindet. Wenn die registrierbare Domain und das Schema des Cookies mit der aktuellen Seite der obersten Ebene übereinstimmen, d. h. dem, was in der Adressleiste des Browsers angezeigt wird, wird davon ausgegangen, dass das Cookie von derselben Website stammt wie die Seite. Dies wird im Allgemeinen als Erstanbieter-Cookie bezeichnet.
Cookies von anderen Domains als der aktuellen Website werden im Allgemeinen als Drittanbieter-Cookies bezeichnet.
Das gute Rezept für eigene Cookies
Wenn das von Ihnen eingestellte Cookie nicht websiteübergreifend verwendet wird, zum Beispiel zur Verwaltung von Sitzungen auf Ihrer Website und nie in einem websiteübergreifenden iFrame, wird dieses Cookie immer in einem Erstanbieterkontext verwendet.
Standardmäßig können Cookies zwischen Websites geteilt, mit JavaScript aufgerufen und über HTTP-Verbindungen gesendet werden. Dies birgt gewisse Datenschutz- und Sicherheitsrisiken. Wir arbeiten kontinuierlich daran, das Standardverhalten zu verbessern. Mit der Privacy Sandbox und anderen Vorschlägen wie ursprungsgebundene Cookies können Sie jedoch schon heute viel tun, indem Sie zusätzliche Attribute für Ihre Cookies festlegen.
Die folgende Konfiguration gilt als Best Practice, um für Sicherheit und browserübergreifende Kompatibilität für die meisten eigenen Cookies zu sorgen. So erhalten Sie eine sichere Grundlage, die Sie anpassen können, um Berechtigungen nur bei Bedarf zu öffnen. In diesem Artikel werden auch Rezeptvariationen für bestimmte Anwendungsfälle behandelt.
Das Rezept
Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;
Host
ist ein optionales Präfix, das einige Attribute obligatorisch macht und andere verbietet:
Secure
muss vorhanden seinDomain
muss weggelassen werdenPath
muss/
sein
Wenn Host
hinzugefügt wurde, können Sie sich darauf verlassen, dass der Browser prüft, ob diese Attribute den __Host
-Regeln entsprechen, und das Cookie andernfalls ablehnen.
Secure
schützt Cookies vor Diebstahl in unsicheren Netzwerken, da das Senden von Cookies nur über HTTPS-Verbindungen zugelassen wird. Wenn Sie Ihre Website noch nicht vollständig zu HTTPS migriert haben, sollten Sie dies priorisieren.
Das Attribut Domain
gibt an, welche Hosts ein Cookie erhalten können. Wird sie weggelassen, wird das Cookie auf den aktuellen Dokumenthost beschränkt, mit Ausnahme von Subdomains: Das Cookie für example.com
wird bei jeder Anfrage an example.com
gesendet, aber nicht bei Anfragen an images.example.com
. Wenn Sie verschiedene Apps auf verschiedenen Subdomains ausführen, verringern Sie so das Risiko, dass eine manipulierte Domain einen Zugang zu den anderen eröffnet.
Path
gibt den Pfad an, der in der angeforderten URL vorhanden sein muss, damit der Browser den Cookie
-Header senden kann. Wenn Sie Path=/
festlegen, wird das Cookie an alle URL-Pfade in dieser Domain gesendet. Durch die Kombination von Domain
und Path=/
wird das Cookie so eng wie möglich an den Ursprung gebunden und verhält sich ähnlich wie andere clientseitige Speicher wie LocalStorage
. Es ist also kein Verwirrung, dass example.com/a
andere Werte an example.com/b
erhält.
Das Attribut HttpOnly
bietet zusätzlichen Schutz vor schädlichen Skripts von Drittanbietern auf Ihren Websites, indem der JavaScript-Zugriff eingeschränkt wird. Dadurch kann ein Cookie nur in Anfrageheadern gesendet werden und ist für JavaScript über document.cookie
nicht verfügbar.
Max-Age
schränkt die Lebensdauer eines Cookies ein, da Browsersitzungen ziemlich lange dauern können und Sie nicht möchten, dass veraltete Cookies immer irgendwo auftauchen. Sie eignet sich für kurzfristige Cookies wie Nutzersitzungen oder sogar kürzere Cookies wie Tokens für die Formulareinreichung. Max-Age
ist in Sekunden definiert und im vorherigen Beispiel auf 7776.000 Sekunden, also 90 Tage, festgelegt. Dies ist eine angemessene Standardeinstellung, die Sie je nach Anwendungsfall ändern können.
In SameSite=Lax
wird festgelegt, dass das Cookie nur bei Anfragen derselben Website gesendet wird. Dabei stimmt die Anfrage mit dem aktuellen Browser-Kontext überein: der Website der obersten Ebene, die der Nutzer gerade besucht, und wird in der Adressleiste angezeigt. SameSite=Lax
ist bei modernen Browsern der Standardwert. Es empfiehlt sich jedoch, ihn aus Gründen der Kompatibilität zwischen Browsern anzugeben, da diese unterschiedliche Standardeinstellungen haben können. Wenn Sie das Cookie ausdrücklich als „Nur selbe Website“ kennzeichnen, wird es auf Ihren Erstanbieterkontext beschränkt und Sie sollten keine Änderungen an diesem Cookie vornehmen müssen, wenn Drittanbieter-Cookies nicht mehr verwendet werden.
Weitere Informationen zu verschiedenen Cookie-Attributen findest du in der Set-Cookie
-Dokumentation zur MDN.
Rezept für eigene Cookies für Websites mit Subdomains
Wenn Sie eine Website mit Subdomains haben und eine Sitzung für alle Subdomains einrichten möchten, kann das Präfix Host
zu restriktiv sein. news.site
könnte beispielsweise Subdomains für Themen wie finance.news.site
und sport.news.site
haben und Sie möchten für alle eine Nutzersitzung verwenden. Verwenden Sie in diesem Fall das Präfix __Secure
anstelle von __Host
und geben Sie Domain
an.
Das Rezept
Set-Cookie:
__Secure-cookie-name=cookie-value;
Secure;
Domain=news.site;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Lax;
Secure
ist ein optionales Präfix, das weniger Anforderungen als Host
geltend macht: Das Cookie muss nur mit dem Attribut Secure
festgelegt werden.
Beschränken des Zugriffs auf eigene Cookies bei Anfragen von Drittanbieter-Websites
SameSite=Lax
-Cookies werden nicht bei websiteübergreifenden Unteranfragen gesendet (z. B. beim Laden eingebetteter Bilder oder iFrames auf der Website eines Drittanbieters). Sie werden aber gesendet, wenn ein Nutzer die ursprüngliche Website aufruft, z. B. wenn er einem Link von einer anderen Website folgt.
Sie können den Zugriff auf Cookies weiter einschränken und verhindern, dass sie zusammen mit Anfragen gesendet werden, die von Websites von Drittanbietern mit SameSite=Strict
initiiert werden. Dies ist nützlich, wenn Sie Cookies für Funktionen haben, die immer hinter einer anfänglichen Navigation stehen, wie beispielsweise das Ändern eines Passworts oder das Tätigen eines Kaufs.
Das Rezept
Set-Cookie:
__Host-cookie-name=cookie-value;
Secure;
Path=/;
HttpOnly;
Max-Age=7776000;
SameSite=Strict;