Cookies

Als Cookies werden kleine Informationszeichenketten bezeichnet, die ein Server auf dem Client hinterlegen kann, indem diese im Response des Servers untergebracht werden und vom Client gespeichert werden. Kontaktiert der Client den Server, der den Cookie hinterlegt hat, nochmals, so wird der Cookie automatisch in den Headern des HTTP-Requests dem Server wieder mitgeschickt. Dem Server werden so die eigenen Informationen wieder zugeschickt. Damit kann der Benutzer beispielsweise wiedererkannt werden oder auch ein Warenkorb wiederhergestellt werden. Das Cookie-Feature wird massiv durch die Sessions genutzt, die in Abschnitt Sessions vorgestellt werden. Hier wird die ID der Session in einem Cookie hinterlegt.

Cookies verfügen zunächst über ein Gültigkeitsdatum. Dieses Datum wird dem Cookie mit von Serverseite mitgegeben. Läuft das Gültigkeitsdatum ab, liefert der Browser das Cookie nicht mehr zurück. Natürlich ist dem Endanwender auch möglich, die Cookies innerhalb des Browsers manuell zu löschen.

Cookies verfügen desweiteren über einen Domainnamen und einen Pfad, auf welchem sie gültig sind. Je allgemeiner der Domainname und Pfad sind, desto globaler ist der Gültigkeitsbereich des Cookies. So lässt sich mit Hilfe des Domainnamens angeben, ob ein Cookie nur für eine Subdomain oder für die gesamte Domain zurückgeliefert werden soll. Es lässt sich angeben, ob nur ein Subpfad der Webseite mit dem Cookie arbeiten darf oder, wenn ein einzelner Slash (/) angegeben ist, die gesamte Webseite auf das Cookie zugreift. Sollte man nicht Eigentümer der gesamten Domain sein oder sogar nur über ein Verzeichnis verfügen, so ist darauf zu achten, dass die Cookies restriktiv gesetzt werden. Sonst können Fremde, die unter ähnlichen URLs ihre Applikationen bereitstellen, die Cookies mitlesen, was eventuell fatal ist, da damit beispielsweise ein Login auf der Seite übernommen werden könnte.

Mit der Funktion setcookie() lässt sich ein Cookie setzen. Dabei ist darauf zu achten, dass diese Funktion aufgerufen wird, bevor irgendeine Ausgabe an den Client geschickt worden ist, da die Cookies im Header platziert werden und der Header mit einer Ausgabe schon gesendet werden musste. Falls die Entscheidung, ob ein Cookie oder andere Header-Variablen gesetzt werden müssen, erst später getroffen wird, kann ein Buffering genutzt werden, um zu verhindern, dass der HTTP-Response sofort versendet wird. Ist der Header schon gesendet, so schlägt das Setzen des Cookies fehl. Die Funktion setcookie() erhält als ersten Parameter den Namen des Cookies übergeben. Die weiteren Parameter sind optional. Als zweiter Parameter kann der Wert als Zeichenkette übergeben werden. Der dritte Parameter beinhaltet ein Datum, ab welchem das Cookie automatisch verfällt. Bei Nichtangabe wird hier die Sessiondauer genommen. Der vierte Parameter ist der Pfad, in welchem das Cookie auf der eigenen Webseite gültig ist. Der fünfte Parameter umfasst den Domainnamen, auf dem es gültig ist. Der sechste boolsche Parameter sagt schließlich aus, ob das Cookie nur über https-verschlüsselte gesicherte Verbindungen übertragen werden darf. Der siebte sagt aus, ob das Cookie nur über HTTP geladen werden kann, das bedeutet, keine Modifikationsmöglichkeiten über JavaScript existieren.

Cookies überschreiben sich. Das bedeutet, dass wenn die Funktion setcookie() mit gleichen Parametern aufgerufen wird, der zuerst gesetzte Zeichenkettenwert verloren geht. Möchte man Arrays in Cookies unterbringen, so sind diese zunächst zu einem String zu serialisieren.

Die Funktion setrawcookie() setzt genau wie die Funktion setcookie() ein Cookie. Auch die Parameterliste ist identisch. Mit Hilfe der Funktion setcookie() wird jedoch der Wert des Cookies URL-kodiert, mit setrawcookie() geschieht dies nicht.

Normalerweise akzeptiert der Client das gesetzte Cookie. Dies kann in Ausnahmefällen nicht der Fall sein, nämlich zum Beispiel dann, wenn der Endnutzer in seinem Client die Speicherung von Cookies aus Datenschutzgründen deaktiviert hat. Cookies galten einmal als ernstzunehmende Gefahr vor Ausspähung. Mittlerweile sollte jedoch diese Hysterie vorüber sein und es kann darauf gebaut werden, dass der angesprochene Browser korrekt reagiert.

Bei einem neu hereinkommenden Request können die Cookieinformation in den superglobalen Variablen $_COOKIE und wahlweise auch $_REQUEST wiedergefunden werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert