Im normalen Leben ist ein Cookie eine zweifellos leckere amerikanische Leckerei. In der Welt des World Wide Webs und der modernen Webbrowser sind Cookies jedoch ein umstrittenes Mittel zum Speichern von Informationen auf dem Rechner des Websurfers geworden.
Technische Grundzüge
Die Cookie-Technologie wurde ursprünglich von Netscape für den Netscape Navigator entwickelt. Mit Cookies ist es einem Server möglich, in einer HTML-Seite gesendete Information durch den Webbrowser des Websurfers auf seinem Rechner speichern zu lassen. Der Server liefert dazu lediglich eine Variable und die Information, während der Client (und nur der Client!) die lokale Speicherung vornimmt.
Erzeugt werden Cookie-Inhalte grundsätzlich auf dem Webserver. Der Websurfer stellt an einen Webserver eine Anfrage (z.B. durch den Aufruf einer bestimmten Web-Seite), die der Webserver dann mit der Übertragung der gewünschten Ressource beantwortet. Cookies werden in dieser Antwort, unsichtbar für den Websurfer, im Kopf der HTTP-Antwort in einer Zeile namens "Set-Cookie" übertragen. Der Webbrowser des Surfers übernimmt die Inhalte dieser Zeile, die den/die Cookie(s) enthält, wertet sie aus und speichert sie lokal auf dem Rechner des Benutzers ab.
Ruft nun der Websurfer eine weitere Ressource auf dem gleichen Server auf, von dem sein Webbrowser bereits einen Cookie bekommen hat, fügt der Webbrowser automatisch in der HTTP-Anfrage eine Zeile "Cookie" an und überträgt die Cookies, die der Surfer von diesem Server in einer früheren Sitzung bekommen hat. Ein auf dem Webserver ablaufendes Programm übernimmt dann diese Informationen und kann sie verarbeiten.
Der Aufbau eines Cookies
Die HTTP-Zeile "Set-Cookie" hat folgende, einfache Parameter, deren Parameterwerte durch ein Semikolon beendet werden müssen:
Set-Cookie: Name=Wert; expires=<Datum>; path=<Pfad>; domain=<Domain-Name>; secure
- Name=Wert;
Die Angabe dieses Parameters ist zwingend erforderlich, da er die eigentliche Information, die vom Client gespeichert werden soll, enthält. Name bezeichnet den Namen der Variable und Wert den Wert der Variable. Erlaubt sind alle Zeichen außer Leerschritte, das Komma und das Semikolon. - expires=Datum;
Dieser (optionale) Parameter definiert ein Verfallsdatum des Cookies nach dem Schema Tag, TT-MM-JJJJ HH:MM:SS GMT. Nach Ablauf des Datums wird der Cookie vom Webbrowser gelöscht. Ist dieser Parameter nicht vorhanden, gilt der Cookie als kurzlebig und wird gelöscht, sobald der Nutzer die Browser-Sitzung beendet. Zur besseren Eindeutigkeit verwenden manche Anbieter für ihre Cookies auch ein Datum aus der Vergangenheit. In so einem Fall löscht der Webbrowser das Cookie ebenfalls beim Beenden. Die Uhrzeit richtet sich immer nach der offiziellen Greenwich-Zeit GMT ("Greenwich Mean Time"), inzwischen offiziell als UTC bezeichnet ("Universal Time Coordinate"). - domain=Domain-Name;
Dieser optionale Parameter kann dazu verwendet werden, die Absenderdomain zu verallgemeinern. Ist dieser Attribut nicht vorhanden, wird die genaue Domain des Hosts als Absender gespeichert, also zum Beispiel "www.netplanet.org". Mit dem Parameter domain kann nun z.B. die Hostadresse auf eine höhere Hierarchie gesetzt werden, also beispielsweise "netplanet.org. Auf diese Weise kann man den Cookie mehreren Hosts gleichzeitig zugänglich machen. Allerdings ist nur eine Hostadresse innerhalb der jeweiligen Domain gestattet. - path=Pfad;
Noch genauer spezifizieren kann man den Cookie mit diesem optionalen Parameter, mit dem man eine Pfadangabe angeben kann. Die aufzurufende Ressource muss dann zunächst genau der Server sein, wie in domain angegeben, und zusätzlich genau im Pfad liegen, wie in path spezifiziert, um den vorher abgespeicherten Cookie vom Webbrowser zu erhalten. - secure
Dieser, ebenfalls optionale Parameter gibt lediglich an, ob der Cookie nur über eine SSL-gesicherte Verbindung übertragen werden darf (erkennbar am Übertragungsprotokoll "https:"). Ist dieser Parameter nicht vorhanden, wird der Cookie auch bei einer nicht gesicherten Verbindung übertragen.
Wo wird ein Cookie abgespeichert?
Die Browserhersteller haben zur Speicherung von Cookies verschiedene Methoden und Verfahren, da die lokale Abspeicherung nicht standardisiert ist. Webbrowser von Netscape und auch Mozilla speichern beispielsweise Cookies in eine Textdatei namens cookie.txt, die innerhalb Benutzerverzeichnisses eines jeden Benutzers liegt. Der Microsoft Internet Explorer richtet im Windows-Verzeichnis extra ein Verzeichnis namens cookies ein, in das jedes Cookie als eigenständige Datei gespeichert wird.
Allen Speichermethoden ist jedoch gemeinsam, dass erzeugte Cookies folgenlos gelöscht werden können und eine Löschung keinesfalls den Browser oder gar das System beschädigen können. Das gilt für die Löschung von einzelnen Cookies oder auch aller gleichzeitig.
Die meisten Browser lassen sich so konfigurieren, dass sie generell keine Cookies akzeptieren sollen. In so einem Fall werden alle eventuell schon vorhandenen Cookies gelöscht und zukünftig alle Cookies, die von Webservern übertragen werden, ignoriert. Alternativ bieten alle Webbrowser auch die Möglichkeit, vor jeder Speicherung eines Cookies eine Berechtigung beim Websurfer durch einen zu bestätigenden Sicherheitshinweis einzuholen. Dies ist jedoch aufgrund der massiven Zahl von Cookies eine auf Dauer nervende Funktion. Moderne Browser bieten zusätzlich die Möglichkeit, die Speicherung von Cookies insoweit zu beschränken, dass nur Cookies an einen Server zurückgeschickt werden, die die explizite Hostadresse des ursprünglichen Absender-Hosts tragen.
Zum Schutze der Systemressourcen hat Netscape schon in seiner Spezifikation vorgesorgt, dass Webbrowser und System mit Cookies nicht überlastet werden: Maximal 300 Cookies lassen sich gleichzeitig speichern. Außerdem dürfen von einer Ressource nur maximal 20 Cookies abgespeichert werden. Wird eine Zahl überschritten, werden jeweils die ältesten Cookies gelöscht. Die maximale Größe eines Cookies ist außerdem auf maximal 4 Kilobyte begrenzt; überzählige Bytes werden abgeschnitten.
Was ist nun so mysteriös an Cookies?
Der fahle Beigeschmack an Cookies ist unübersehbar: Einem Serverbetreiber ist es durch geschickte Nutzung von Cookies möglich, nahezu unbemerkt ein Nutzerprofil von einem Websurfer zu erstellen. Dazu identifiziert er dieses anonyme Profil mit einer Kennung und lässt diese Kennung durch einen Cookie beim Webbrowser des Websurfers abspeichern. Gibt der Websurfer im Laufe einer Sitzung irgendwann persönliche Daten preis, zum Beispiel durch das Ausfüllen eines Bestellformulars, kann dieses Nutzerprofil sogar persönlich zugeordnet werden.
Seit Jahren wird das Anlegen von Nutzerprofilen in der Internet-Werbung genutzt. Betreiber von Web-Angeboten lassen Bannerwerbung von großen Bannerwerbeunternehmen schalten, die ihre Banner in vielen Web-Angeboten rotieren lassen. Da die Banner alle den gleichen Ursprungs-Server haben, lassen sich so sogar site-übergreifende Nutzerprofile anlegen, da das Nutzerprofil nicht beim Site-Betreiber liegt, sondern beim Banneranbieter.
Ebenfalls bedenklich ist, dass Cookies von den meisten Webbrowsern nicht verschlüsselt auf einem Rechner abgespeichert werden, um eben auf diese Weise den Inhalt von Cookies transparent zu gestalten. Speichert aber ein Betreiber eines Webservers durch einen Cookie die eventuell persönlichen Zugangsdaten eines Zugangs, würden diese Daten lokal auf dem Rechner des Websurfers abgelegt. Sind diese Daten nicht gesondert verschlüsselt, wären sie für jeden Benutzer dieses Rechners sichtbar, wenn dieser sich die Cookies anschaut.