HTTP-Cookie
Ein HTTP-Cookie, auch Browser-Cookie genannt ([Webserver zu einem Browser 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/gespeicherte Daten.
]; engl., „Plätzchen“, „Keks“), bezeichnet Informationen, die einHTTP-Cookies sind eine spezielle Form der allgemeinen Magic Cookies. Sie ermöglichen das clientseitige Speichern von Information, die auch vom Server stammen können und die bei weiteren Aufrufen für den Benutzer transparent an den Server übertragen werden. Dadurch erleichtern Cookies die Benutzung von Webseiten, die auf Benutzereinstellungen reagieren oder den Aufbau von Sessions. Dieses Konzept wurde ursprünglich von Netscape entwickelt und in RFC 2109 spezifiziert.
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 auch mit Bilddateien oder jedem anderen Dateityp, kann ein Server nur einen Cookie versenden, mit einer Anfrage des Browsers können gleichzeitig mehrere Cookies versandt werden.
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 und zielgruppenorientierte Werbemails schicken. Jedoch kann der Online-Shop nur das Surfverhalten innerhalb seiner eigenen Webseite verfolgen.
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 angepasst („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 Missbrauch 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 wird, 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.
Mit modernen Browsern ist es auch möglich, Cookies automatisch beim Schließen des Browsers zu löschen. Damit werden Probleme mit Mehrbenutzersystemen weitgehend vermieden und die Überwachung des Benutzers durch Cookies wird zumindest eingeschränkt.
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 UTC 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. Die meisten HTTP-Clients senden einen "sicheren" Cookie jedoch nur über eine HTTPS-Verbindung, auch wenn er über eine HTTP-Verbindung gesetzt wurde.
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
Weblinks
- www.cookiecentral.com – umfangreiche Seite über Cookies (englisch)
- www.web-analytics.org – Einsatz von Cookies im Marketing.
- RFC 2965 HTTP State Management Mechanism – Festlegung des Cookies-StandardsVorlage:Link FAVorlage:Link FA