Ein Cookie ([]; englisch für „Keks“) ist eine Textinformation, die im Browser auf dem Computer des Benutzers jeweils zu einer besuchten Website gespeichert werden kann. Ein Cookie wird durch den Webserver erzeugt und über das Hypertext Transfer Protocol (HTTP) an den Browser gesendet. Der Browser speichert das Cookie und übermittelt es, solange es nicht gelöscht wird, bei jedem Seitenaufruf zurück an den Webserver. Ein Cookie kann durch die Website auch per JavaScript erzeugt und wieder ausgelesen werden.

Cookies dienen dazu, zustandsbehaftete Webanwendungen zu ermöglichen, um beispielsweise den Login mitsamt den nutzerspezifischen Einstellungen einer Website zu speichern oder den Warenkorb bei einem Online-Händler. Dies wird so umgesetzt, dass ein Sitzungsbezeichner im Cookie gespeichert wird, mit dem eine Website den Benutzer zu einer auf dem Server gespeicherten Sitzung zuordnen kann. Ein weiterer Einsatzzweck ist die NutzerverfolgungKarsten Neß: Cookies. Privacy Handbuch; abgerufen am 24. Dezember 2018 zu Werbezwecken mit speziell präparierten Seiten. Die Verwendung von Cookies zur Analyse des Nutzungsverhaltens und für Werbezwecke erfordert die Einwilligung des Nutzers.

Der Begriff Cookie wird im Datenschutz auch als Synonym für Datenentnahme, Datenspeicherung, Datennutzung, Datenverwertung, Datenweitergabe wie auch Datenmissbrauch verwendet, unabhängig davon, ob dazu tatsächlich ein HTTP-Cookie verwendet wird oder andere Techniken eingesetzt werden.

Aufbau Ein Cookie besteht aus einem Namen und einem Wert. Bei der Definition eines Cookies können bzw. müssen zusätzlich ein oder mehrere Attribute angegeben werden.

"Set-Cookie:" Name "=" Wert *( ";" Attribut) "Cookie:" Name "=" Wert *( ";" Name "=" Wert)

Name und Wert sind Folgen von druckbaren US-ASCII-Zeichen, wobei einige Zeichen ausgeschlossen sind. Die Syntax von Name verwendet einen eingeschränkten Zeichensatz, wie er auch bei anderen HTTP-Kopfzeilen in RFC 2616 verwendet wird. Verweist auf die Spezifikation von token in: Für Wert sind Semikolon, Komma, Leerraum-Zeichen und Backslash ausgeschlossen. Um beliebige Daten als Cookie-Wert zu speichern, kann eine Kodierung wie Base64 oder die URL-Kodierung mit %xx verwendet werden.

Das HttpOnly-Attribut soll den Zugriff auf Cookies mittels JavaScript verhindern. Auf Cookies, welche das Attribut HttpOnly besitzen, kann nicht per JavaScript zugegriffen werden. Dies stellt einen möglichen Schutz gegenüber Cross-Site-Scripting dar, sofern der jeweils genutzte Browser dieses Attribut unterstützt.

Spezifikation Nach RFC 6265 soll ein Browser die folgenden Mindestgrößen unterstützen: Ein Cookie soll mindestens 4096 Bytes enthalten können. Es sollen pro Domain mindestens 50 Cookies gespeichert werden können. Es sollen insgesamt mindestens 3000 Cookies gespeichert werden können.

Die Mindestgrößen müssen von allen beteiligten Browsern und Servern garantiert werden. Größere Cookies oder eine größere Cookieanzahl lässt die Spezifikation aber durchaus zu.

Funktionsweise Es gibt zwei Möglichkeiten für die Übertragung, Zuweisung und Auswertung von Cookies durch eine Website: Übertragung in den Kopfzeilen (dem Header) von Anfragen und Antworten via HTTP. Cookies entstehen im Client, wenn bei dessen Zugriff auf einen Webserver neben anderen HTTP-Kopfzeilen in der Antwort des Servers zusätzlich eine Cookie-Zeile übertragen wird (siehe Aufbau). Außerdem kann ein Cookie lokal durch JavaScript oder weitere Skriptsprachen erzeugt werden. Das Skript befindet sich in der vom Server übermittelten Webseite.

Die lokalen Cookies derselben Domain – also nicht anderer Websites – können ausgelesen, verwertet und geändert werden. Damit können beispielsweise durch JavaScript Informationen über die lokalen Benutzeraktivitäten eingearbeitet werden, die in der Sitzung ohne weiteren Serverkontakt angefallen waren. Mit dem nächsten Kontakt zur Website werden sie in den HTTP-Kopfzeilen auch dorthin übertragen.

Cookie-Informationen werden lokal im Browser gespeichert, üblicherweise in einer Cookie-Datenbank. Bei nachfolgenden weiteren Zugriffen auf den Webserver sucht der Client-Browser alle Cookies dieser Domain heraus, die zum Webserver und dem Verzeichnispfad des aktuellen Aufrufs passen. Diese Cookie-Daten werden im Header des HTTP-Zugriffs mit übertragen, sodass die Cookies nur an jenen Webserver zurückgehen dürfen, von dem sie einst auch stammten.

Ein Cookie kann beliebigen Text enthalten, kann also neben einer reinen Identifikation auch beliebige Einstellungen lokal speichern, jedoch sollte seine Länge 4 Kilobyte (4·1024 Byte) nicht überschreiten, um mit allen Browsern kompatibel zu bleiben. Die Cookies werden mit jeder übermittelten Datei übertragen, also auch mit Bilddateien oder jedem anderen Dateityp; dies gilt insbesondere für eingebettete Elemente wie Werbebanner, die von anderen Servern eingebunden werden als dem Ursprung einer angezeigten HTML-Datei. So kann eine einzelne Webseite zu mehreren Cookies führen, die von verschiedenen Servern kommen und an diese jeweils wieder zurückgeschickt werden.

Cookies werden ausschließlich vom Client verwaltet. Somit entscheidet der Client, ob beispielsweise ein Cookie gespeichert oder nach der vom Webserver gewünschten Lebensdauer wieder gelöscht wird. Allerdings können auch auf dem Server entsprechende Informationen gespeichert werden, um beispielsweise Statistiken über die Zahl der Aufrufe von Webseiten zu erzeugen.

Beispiel Szenario: Eine Webseite bietet eine Suchfunktion an, die sich an den zuletzt eingegebenen Suchbegriff erinnern kann, selbst wenn der Benutzer zwischenzeitlich den Browser beendet. Dieser Suchbegriff kann nicht auf dem Server gespeichert werden, da der Server dazu den Besucher eindeutig identifizieren müsste, und das geht mit reinem HTTP nicht. Deshalb soll der zuletzt eingegebene Suchbegriff vom Browser des Besuchers (in einem Cookie) gespeichert werden.

Wenn der Besucher die Suchfunktion zum ersten Mal aufruft (hier mit dem Suchbegriff „cookie aufbau“), schickt er folgende Anfrage an den Server: GET /cgi/suche.py?q=cookie+aufbau HTTP/1.0 Der Server antwortet mit dem Suchergebnis und bittet den Browser mittels des „Set-Cookie“ Feldes, sich den letzten Suchbegriff zu merken: HTTP/1.0 200 OK Set-Cookie: letzteSuche=Y29va2llIGF1ZmJhdQ==; expires=Tue, 29-Mar-2014 19:30:42 GMT; Max-Age=2592000; Path=/cgi/suche.py (Normalerweise stehen alle Bestandteile des Cookies in einer einzigen Zeile. Zur besseren Lesbarkeit werden in diesem Codebeispiel jedoch die Attribute auf jeweils eines pro Zeile verteilt.)

Das Cookie hat die folgenden Bestandteile: Nutzdaten (letzteSuche): Da die Nutzdaten nicht erlaubte Zeichen enthalten können (Leerzeichen in „cookie aufbau“), gibt der Server sie hier mit Base64 kodiert zurück. Ablaufdatum (expires): Das Cookie wird nur in Anfragen mitgeschickt, die vor dem 29. März 2014 passieren. Maximalalter (Max-Age): Das Cookie wird nur in den folgenden 30 Tagen mitgeschickt, später nicht mehr. Teilbereich der Webseite (Path): Das Cookie wird nur an die Suchmaschine (/cgi/suche.py) geschickt, da alle anderen Teile der Webseite die Information nicht brauchen.

Anwendungen HTTP ist ein zustandsloses Protokoll, daher sind für den Webserver die Seitenaufrufe voneinander unabhängig. Eine Webanwendung, deren Interaktion mit dem Benutzer über mehrere Seitenaufrufe andauert, muss mit Tricks arbeiten, um den Teilnehmer über mehrere Zugriffe hinweg identifizieren zu können. Dazu kann in einem Cookie vom Server ein eindeutiger Sitzungsbezeichner gespeichert werden, um genau diesen Client bei weiteren Aufrufen wiederzuerkennen. Aus Sicherheitsgründen wird beim Electronic Banking eher ein Einmal-Token pro Seitenaufruf eingesetzt.

Onlineshops können Cookies verwenden, um Waren in virtuellen Einkaufskörben zu sammeln. Der Kunde kann damit Artikel in den Einkaufskorb legen und sich weiter auf der Website umschauen, um danach die Artikel zusammen zu kaufen. Die Identifikation des Warenkorbs bzw. der Session des Benutzers wird im Cookie abgelegt, die Artikel-Kennungen werden auf dem Webserver diesem Warenkorb bzw. der Session des Benutzers zugeordnet. Erst bei der Bestellung werden diese Informationen serverseitig ausgewertet.

Damit bei Webanwendungen Benutzeraktionen und -eingaben, die für den Server bestimmt sind, bei Abbrüchen der Verbindung zum Server (zum Beispiel in Mobilfunknetzen) nicht verlorengehen, können Cookies zur Zwischenspeicherung eingesetzt werden. Bei Wiederherstellung der Verbindung werden sie vom Server abgefragt. Die Webanwendung erkennt dabei die Reihenfolge, in der die Cookies erzeugt wurden, und markiert bereits verarbeitete Cookies oder löscht deren Inhalt. Weil bei dieser Verwendung unter Umständen viele Cookies erzeugt werden, die frühestens beim Schließen des Browsers gelöscht werden, der Speicherplatz des Browsers für Cookies aber beschränkt ist, muss die Webanwendung Vorkehrungen gegen einen Cookie-Überlauf treffen.Carsten Bormann: O’Reilly Emerging Technology, März 2006

Sicherheit und Gefahren Tracking

Die Möglichkeit der eindeutigen Erkennung kann missbraucht werden. Cookies werden unter anderem dafür verwendet, Benutzerprofile über das Surfverhalten eines Benutzers zu erstellen. Zum Beispiel kann ein Online-Shop diese Daten mit dem Namen des Kunden verknüpfen und zielgruppenorientierte Werbemails schicken.

Jedoch kann der Online-Shop nur das Surfverhalten innerhalb seiner eigenen Webseite verfolgen. Um Informationen über das Surfverhalten seiner Kunden zu erhalten, muss sich der Online-Shop eines Dritten, eines Tracking-Anbieters, bedienen. Der Tracking-Anbieter bietet dem Online-Shop wie auch anderen Online-Shops Tracking-Komponenten an, die diese in ihre Webseiten integrieren. Das sind Skripte, verlinkte Skripte oder verlinkte Komponenten (Webseiten, Bilder, Banner, Zählpixel, Schriften), die mit dem Aufrufen der Online-Shops mitgeladen werden und Serveranfragen an den Tracking-Anbieter generieren, die wiederum Cookies mit den erhaltenen Informationen im Browser setzen. Diese durch Dritte erstellten Cookies nennt man Third-Party-Cookies (englisch für Cookies von Dritten). Haben diese Cookies den Zweck des Trackings, werden diese auch als „tracking cookies“ (englisch für Verfolgen) bezeichnet. Der Tracking-Anbieter registriert die Besuche der mit ihm verbundenen Online-Shops und kann diese Besuche somit den einzelnen Benutzern zuordnen. Stellt der Tracking-Anbieter diese Informationen dem Online-Shop zur Verfügung, kann dieser auf die Interessen des Besuchers schließen und seinen Online-Shop entsprechend anpassen („personalisieren“).

Es gibt auch seriöse Drittanbieter-Dienste, die technisch bedingt Tracking-Informationen mitsammeln. Für das erfolgreiche Tracking sind Drittanbietercookies hilfreich, aber nicht zwingend erforderlich. Die durch andere Identitätsermittlungsverfahren gesammelten Identitätsinformationen, wie zum Beispiel durch Fingerprinting, benötigen keine Cookies. Noch perfider, die zu übertragenden Informationen werden per Parameter mit den verlinkten Komponenten übertragen. Gemeinsam ist aber allen Tracking-Techniken das Einbinden von Tracking-Komponenten in den Code der Webseite. Ein Abschalten der Cookies im Browser unterbindet also das Tracking nicht zwangsläufig, es werden dann nur andere Techniken eingesetzt. Der wirkungsvollste Schutz gegen Tracking ist es, nur auf Webseiten zuzugreifen, die keine Tracking-Techniken einsetzen.