HTTP-Cookie
Ein HTTP-Cookie, auch Browser-Cookie genannt ([Webserver zu einem Browser (Cookie unterstützender Client) sendet oder die clientseitig durch Javascript erzeugt werden. Der Client sendet die Informationen in der Regel bei späteren Zugriffen an den selben Webserver im Hypertext Transfer Protocol-Header an den Server. Cookies sind clientseitig persistente Daten.
]; engl., „Plätzchen“, „Keks“), bezeichnet Informationen, die einMit Cookies ist das zustandslose Hypertext Transfer Protocol um die Möglichkeit erweitert, Information zwischen Aufrufen zu speichern. Dadurch erleichtern Cookies die Benutzung von Webseiten, die häufig oder wiederholt Benutzereingaben erfordern oder den Aufbau von Sessions.
Funktionsweise
Cookies werden in den Header-Teilen von HTTP-Anfragen und -Antworten übertragen.
Wenn der Webserver mit der HTTP-Response Cookie-Informationen zu einem Browser sendet, werden sie von diesem lokal auf dem Endgerät gespeichert, üblicherweise in einer Textdatei. Bei jedem HTTP-Request sucht der Browser nach Cookies, die von der selben Website (und Verzeichnis) stammen, und schickt diese Cookie-Daten im Header des HTTP-Requests mit.
Ein Cookie kann beliebigen Text enthalten, seine Länge sollte jedoch 4 KiB nicht überschreiten, um mit allen Browsern kompatibel zu bleiben. Mit jeder übermittelten Datei, also z. B. auch mit Bilddateien, kann ein Server nur einen Cookie versenden, mit einer Anfrage des Browsers können gleichzeitig mehrere Cookies versandt werden. Dieses Konzept wurde ursprünglich von Netscape entwickelt und in RFC 2109 spezifiziert.
Cookies werden ausschließlich vom Client verwaltet. Somit entscheidet der Client, ob z. B. ein Cookie gespeichert wird oder die vom Webserver gewünschte eingeschränkte Lebensdauer des Cookies durch Löschung ausgeführt wird.
Gängige Browser erlauben dem Nutzer meist einschränkende Einstellungen zum Umgang des Client mit Cookies, z. B.:
- Keine Cookies annehmen.
- Nur Cookies des Servers der aufgerufenen Seite annehmen.
- Benutzer bei jedem Cookie fragen.
- Alle Cookies eines Servers löschen, wenn kein Fenster mehr mit der Adresse dieses Webservers geöffnet ist.(Session-Cookie)
- Alle Cookies bei Beendigung des Client löschen.
Dazu erlauben einige Browser verwaltende Aktionen, wie:
- Daten im Cookie ansehen.
- Einzelne oder alle Cookies löschen.
Ob ein Cookie angenommen (clientseitig gespeichert)wurde, muss die serverseitige Anwendung in weiteren HTTP-Requests erkennen, da vom Client keine Rückmeldung erfolgt.
Der Server kann ein Cookie durch Überschreiben mit leeren Daten löschen.
Verwendung
Eine typische Anwendung von Cookies ist das Speichern persönlicher Einstellungen auf Websites, zum Beispiel in Foren. Damit ist es möglich, diese Website zu besuchen, ohne jedes Mal die Einstellungen erneut vornehmen zu müssen.
Mit Cookies können auch Sessions realisiert werden. Dazu wird in einem Cookie vom Server eine eindeutige Session-ID gespeichert, um genau diesen Client bei weiteren Aufrufe wieder zu erkennen und damit nicht bei jedem Aufruf einer Unterseite das Passwort erneut eingegeben werden muss.
Auch Online-Shops können Cookies verwenden, um sessionlose virtuelle Einkaufskörbe zu ermöglichen. Der Kunde kann damit Artikel in den Einkaufskorb legen und sich weiter auf der Website umschauen, um danach die Artikel zusammen online zu kaufen. Die Artikel-Kennungen werden in einem Cookie gespeichert und erst beim Bestellvorgang serverseitig ausgewertet.
Gefahren
Die eindeutige Erkennung kann für Zwecke eingesetzt werden, die von vielen Benutzern als missbräuchlich angesehen werden. Cookies werden z.B. dafür verwendet, Benutzerprofile über das Surfverhalten eines Benutzers zu erstellen. Ein Online-Shop kann z. B. diese Daten mit dem Namen des Kunden verknüpfen, wenn man Kunde bei ihm ist, und zielgruppenorientierte Werbemails schicken. Außerdem kann der Online-Shop nur das Surfverhalten innerhalb seiner eigenen Webseite verfolgen. Ein Cookie kann in jedem Fall niemals dazu verwendet werden, private Daten eines Benutzers auszulesen, die er nicht bewusst auf der entsprechenden Website selbst eingibt.
Server, die Werbebanner für viele Websites liefern, können so genannte „serverfremde“ Cookies setzen. Gegebenenfalls kann so der Besuch unterschiedlicher Websites einem Benutzer zugeordnet werden. Daraus kann auf die Interessen des Besuchers geschlossen und Websites entsprechend angepaßt („personalisiert“) werden. Im schlimmsten Fall können die Daten z. B. bei der Bestellung in einem Webshop einer konkreten Person zugeordnet werden. Verhindert werden kann dieser Mißbrauch durch eine entsprechende Browser-Einstellung, damit nur Cookies des Servers der aufgerufenen Seite angenommen werden.
In Umgebungen, in denen mehrere Nutzer den selben Rechner teilen, etwa in Schulen, besteht gegebenenfalls die Gefahr, dass ein noch gültiger Session-Cookie vom nächsten Nutzer des Rechners verwendet werden könnte, um diese Session fortzusetzen. Dieses Risiko kann verhindert werden, indem man grundsätzlich alle Cookies vor dem Beenden des Browsers löscht oder eine entsprechende Browser-Einstellung nutzt.
Erlauben oder Sperren?
Ein Kompromiss zwischen den Vor- und Nachteilen von Cookies kann erzielt werden, indem man seinen Browser so konfiguriert, dass persistente Cookies nicht oder nur gegen Rückfrage zugelassen werden, was z. B. die Erstellung von Benutzerprofilen erschwert, und Session-Cookies automatisch zugelassen werden, z. B. für Webeinkäufe, Passwörter. Außerdem bieten die meisten Browser die Möglichkeit, Cookies selektiv für bestimmte Domänen zu erlauben bzw. zu sperren oder nach dem Surfen automatisch zu löschen, wie es automatisch bei Session-Cookies geschieht. Auch ist es möglich, serverfremde Cookies automatisch abzuweisen, über die ein Dritter, etwa ein Werbepartner der Internet-Seite, das eigene Verhalten über mehrere Server hinweg aufzeichnen könnte.
Aufbau
Ein Cookie besteht aus einem Namen und einem Wert sowie mehreren benötigten oder optionalen Attributen mit oder ohne Wert. Einige Attribute sowie deren Einschließen in Hochkommas werden empfohlen.
Name
- Beliebiger Name und Wert aus ASCII-Zeichen die vom Server übergeben werden
Version
- Gibt die Cookie-Management-Spezifikation in einer Dezimalzahl an.
Expires
- Ablaufdatum, Zeitpunkt der automatischen Löschung in GMT für HTTP/1.0
Max-age
- Ablaufzeit in Sekunden - 0 für Löschung - bei HTTP/1.1
Domain
- Domain oder Bestandteil des Domainnamens, für den der Cookie gilt
Path
- Gültigkeits-Pfad (Teil der Anfrage-URI), um die Gültigkeit des Cookies auf einen bestimmten Pfad zu beschränken
Port
- Beschränkung des Ports auf den aktuell verwendeten oder auf eine Liste von Ports
Comment
- Kommentar zur näheren Beschreibung des Cookies
CommentURL
- URL unter welcher eine Beschreibung zur Funktionsweise zu finden ist
Secure
- Rücksendung des Cookie über eine mindestens ebenso sichere Verbindung - ohne zugehörigen Wert.
Discard
- Unbedingt Löschung des Cookies bei Beendigung des User-Agents
Funktionsweise - ein Beispiel
Cookies werden durch den Webserver im HTTP-Header mit der Angabe Set-Cookie:
bearbeitet. Der Cookie fängt mit dem Namen und den zu speichernden Daten an und kann danach mehrere Angaben zur Verwendung beinhalten:
Set-Cookie: letzteSuche="cookie aufbau"; expires=Tue, 29-Mar-2005 19:30:42 GMT; Max-Age=2592000; Path=/cgi/suche.py; Version="1";
Mit dieser Headerzeile sendet der Webserver einen Cookie mit dem Namen letzteSuche
und dem Wert cookie aufbau
an den Browser. Der Cookie soll am 29. März 2005 oder in 30 Tagen (2592000 = 30*24*60*60 Sekunden) gelöscht werden. Der Browser sollte ihn nur mit Anfragen zurückschicken, deren Pfad mit /cgi/suche.py
anfängt und an diesem Server gerichtet sind.
Der Client schickt Cookies durch die Angabe von Cookie:
, dem Namen und Wert sowie mit den jeweiligen Attributen mit vorangestelltem "$":
Cookie: letzteSuche="cookie aufbau"; $Path=/cgi/suche.py; $Version="1";
Browseranforderungen
Nach RFC 2965 soll ein Browser Folgendes unterstützen:
- Es sollen insgesamt mindestens 300 Cookies gespeichert werden können.
- Es sollen pro Domain mindestens 20 Cookies gespeichert werden können.
- Ein Cookie soll mindestens 4096 Bytes enthalten können.
Manche Browser können mehr Cookies und/oder auch Cookies mit längeren Zeichenketteninhalten verarbeiten, garantiert ist dies aber nicht. Andersherum halten sich auch nicht alle Browser an alle Anforderungen, als Webdesigner sollte man sich also auch bei Unterschreitung der Anforderungen nicht auf der sicheren Seite wähnen.
Siehe auch
- Cookie
- HTTP
- Logfile-Analyse
- RFC 2965 HTTP State Management Mechanism – Festlegung des Cookiesstandards
- RFC 2109 HTTP State Management Mechanism – Veralteter Cookiestandard
- Cookie per PHP setzen
Weblinks
- www.cookiecentral.com - umfangreiche Seite über Cookies (englisch)
- www.web-analytics.org - Einsatz von Cookies im Marketing.