Cookies

Ein Cookie ist ein Datenblock, der im Browser gespeichert wird und dazu dient, den Status und andere Informationen beizubehalten, die eine Website benötigt, um ihre Funktionen auszuführen.

Ein Cookie ist eine kleine Datei, die Websites auf dem Computer ihrer Nutzer speichern. Die darin enthaltenen Informationen werden zwischen dem Browser und der Website hin und her übertragen.

Jedes Cookie ist ein Schlüssel/Wert-Paar mit einer Reihe von Attributen, die festlegen, wann und wo das Cookie verwendet wird. Mit diesen Attributen werden beispielsweise Ablaufdaten festgelegt oder angegeben, dass das Cookie nur über HTTPS gesendet werden soll. Sie können ein Cookie in einem HTTP-Header oder über eine JavaScript-Schnittstelle festlegen.

Cookies sind eine der Methoden, mit denen Websites einen dauerhaften Status hinzufügen können. Im Laufe der Jahre haben sich ihre Möglichkeiten erweitert, aber sie haben auch einige problematische Altlasten auf der Plattform hinterlassen. Um dieses Problem zu beheben, ändern Browser (einschließlich Chrome, Firefox und Edge) ihr Verhalten, um datenschutzfreundlichere Standardeinstellungen zu erzwingen.

Cookies in Aktion

Angenommen, Sie haben einen Blog, in dem Sie Ihren Nutzern eine Werbeaktion für Neuigkeiten präsentieren möchten. Nutzer können die Werbeaktion schließen und sehen sie dann eine Weile nicht mehr. Sie können diese Einstellung in einem Cookie speichern, es so festlegen, dass es nach einem Monat (2.600.000 Sekunden) abläuft, und es nur über HTTPS senden. Der Header würde so aussehen:

Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
Drei Cookies, die in einer Antwort von einem Server an einen Browser gesendet werden
Server legen Cookies mit dem Set-Cookie Header fest.

Wenn ein Leser eine Seite aufruft, die diese Anforderungen erfüllt (er verwendet eine sichere Verbindung und das Cookie ist weniger als einen Monat alt), sendet sein Browser diesen Header in der Anfrage:

Cookie: promo_shown=1
Drei Cookies, die in einer Anfrage von einem Browser an einen Server gesendet werden
Ihr Browser sendet Cookies im Cookie Header zurück.

Sie können die für diese Website verfügbaren Cookies auch in JavaScript mit document.cookie hinzufügen und lesen. Wenn Sie document.cookie zuweisen, wird ein Cookie mit diesem Schlüssel erstellt oder überschrieben. Sie können beispielsweise Folgendes in der JavaScript-Konsole Ihres Browsers ausprobieren:

→ document.cookie = "promo_shown=1; Max-Age=2600000; Secure"
← "promo_shown=1; Max-Age=2600000; Secure"

Wenn Sie document.cookie lesen, werden alle Cookies ausgegeben, auf die im aktuellen Kontext zugegriffen werden kann. Die einzelnen Cookies werden durch ein Semikolon getrennt:

→ document.cookie;
← "promo_shown=1; color_theme=peachpuff; sidebar_loc=left"
JavaScript-Zugriff auf Cookies im Browser
JavaScript kann mit document.cookie auf Cookies zugreifen.

Wenn Sie dies auf einer Auswahl beliebter Websites ausprobieren, werden Sie feststellen, dass die meisten von ihnen deutlich mehr als nur drei Cookies festlegen. In den meisten Fällen werden diese Cookies bei jeder Anfrage an diese Domain gesendet, was eine Reihe von Auswirkungen hat. Die Upload-Bandbreite ist für Ihre Nutzer oft stärker eingeschränkt als die Download-Bandbreite. Dieser Overhead bei allen ausgehenden Anfragen führt zu einer Verzögerung der Zeit bis zum ersten Byte. Seien Sie sparsam mit der Anzahl und Größe der von Ihnen festgelegten Cookies. Verwenden Sie das Attribut Max-Age, um sicherzustellen, dass Cookies nicht länger als nötig gespeichert werden.

Was sind eigene Cookies und Drittanbieter-Cookies?

Wenn Sie sich dieselbe Auswahl von Websites noch einmal ansehen, haben Sie wahrscheinlich festgestellt, dass Cookies für eine Vielzahl von Domains vorhanden waren, nicht nur für die, die Sie gerade besucht haben. Cookies, die mit der Domain der aktuellen Website übereinstimmen, d. h. mit dem, was in der Adressleiste des Browsers angezeigt wird, werden als eigene Cookies bezeichnet. Cookies von anderen Domains als der aktuellen Website werden als Drittanbieter-Cookies bezeichnet. Dies ist keine absolute Bezeichnung, sondern relativ zum Kontext des Nutzers. Dasselbe Cookie kann je nachdem, auf welcher Website sich der Nutzer gerade befindet, entweder ein eigenes Cookie oder ein Drittanbieter-Cookie sein.

Drei Cookies, die über verschiedene Anfragen auf derselben Seite an einen Browser gesendet werden
Cookies können von einer Vielzahl verschiedener Domains auf einer Seite stammen.

Nehmen wir das vorherige Beispiel noch einmal auf. Angenommen, einer Ihrer Blogposts enthält ein Bild einer besonders tollen Katze, das unter /blog/img/amazing-cat.png gehostet wird. Weil es so ein tolles Bild ist, verwendet es eine andere Person direkt auf ihrer Website. Wenn ein Besucher Ihren Blog besucht hat und das Cookie promo_shown hat, wird dieses Cookie in der Anfrage für das Bild gesendet , wenn er amazing-cat.png auf der Website der anderen Person aufruft. Das ist für niemanden besonders nützlich, da promo_shown auf der Website der anderen Person nicht verwendet wird. Es erhöht nur den Aufwand der Anfrage.

Wenn das eine unbeabsichtigte Wirkung ist, warum sollten Sie das tun? Dieser Mechanismus ermöglicht es Websites, den Status beizubehalten, wenn sie in einem Drittanbieterkontext verwendet werden. Wenn Sie beispielsweise ein YouTube-Video in Ihre Website einbetten, sehen Besucher im Player die Option „Später ansehen“. Wenn Ihr Besucher bereits in YouTube angemeldet ist, wird diese Sitzung durch ein Drittanbieter-Cookie im eingebetteten Player verfügbar gemacht. Das bedeutet, dass das Video mit der Schaltfläche „Später ansehen“ einfach gespeichert wird, anstatt dass der Nutzer sich anmelden oder Ihre Seite verlassen und zu YouTube wechseln muss.

Dasselbe Cookie wird in drei verschiedenen Kontexten gesendet
Ein Cookie in einem Drittanbieterkontext wird beim Besuch verschiedener Seiten gesendet.

Eine der kulturellen Eigenschaften des Webs ist, dass es standardmäßig offen ist. Das hat es so vielen Menschen ermöglicht, eigene Inhalte und Apps zu erstellen. Dies hat jedoch auch eine Reihe von Sicherheits- und Datenschutzbedenken mit sich gebracht. Websiteübergreifende-Anfrage-Fälschungsangriffe (CSRF) beruhen auf der Tatsache, dass Cookies an jede Anfrage an eine bestimmte Quelle angehängt werden, unabhängig davon, wer die Anfrage initiiert. Wenn Sie beispielsweise evil.example besuchen, können Anfragen an your-blog.example ausgelöst werden und Ihr Browser hängt die zugehörigen Cookies an. Wenn Ihr Blog nicht sorgfältig mit der Validierung dieser Anfragen umgeht, kann evil.example Aktionen wie das Löschen von Beiträgen oder das Hinzufügen eigener Inhalte auslösen.

Nutzer sind sich auch immer bewusster, wie Cookies verwendet werden können, um ihre Aktivitäten auf mehreren Websites zu verfolgen. Bisher gab es jedoch keine Möglichkeit, Ihre Absicht mit dem Cookie explizit anzugeben. Ihr Cookie promo_shown sollte nur in einem Erstanbieterkontext gesendet werden, während ein Sitzungscookie für ein Widget, das auf anderen Websites eingebettet werden soll, absichtlich dazu dient, den angemeldeten Status in einem Drittanbieterkontext bereitzustellen.

Sie können Ihre Absicht mit einem Cookie explizit angeben, indem Sie das entsprechende SameSite-Attribut festlegen.

Informationen zum Identifizieren Ihrer eigenen Cookies und zum Festlegen geeigneter Attribute finden Sie unter Rezepte für eigene Cookies.