Von Cookies und Zuständen

Cookie Monster by Isabell Schulz https://www.flickr.com/photos/isapisa/14813766988 CC BY-SA 2.0

Cookie Monster by Isabell Schulz https://www.flickr.com/photos/isapisa/14813766988 CC BY-SA 2.0

Auf jeder Website, die sich an eine europäische Zielgruppe wendet, wirst du ab dem 25. Mai 2018 unter anderem einen Hinweis finden, dass unter bestimmten Umständen Cookies gespeichert werden. Diese Hinweise sind bereits seit 2009 vorgeschrieben, ab 25. Mai können allerdings, im Rahmen der neuen europäischen Datenschutzgrundverordnung (DSGVO), Geldstrafen verhängt werden, wenn gegen die Verordnung verstossen wird. Die meisten Artikel über die DSGVO enthalten an irgendeiner Stelle den Hinweis, dass nur ein spezialisierter Anwalt weiss, wie man das wirklich alles richtig macht und der entsprechende Artikel natürlich keine Rechtsberatung sei. Das ist so ähnlich wie bei Artikeln über das schnelle Geld mit Bitcoins, die keine Finanzberatung sind.

Die DSGVO gilt nicht in der Schweiz und umfasst mehr als das Cookie Thema. Ich halte die Wikipedia für einen guten Anfangspunkt um mehr zum Thema zu erfahren (DSGVO Wikipedia). Du wirst auch vermutlich am 26. Mai nicht verklagt werden, wenn du etwas falsch oder gar nichts machst. Allgemeine Meinung scheint zu sein, dass sich das so nach und nach schon „ruckelt“ und nationale Gerichte über die konkrete Ausgestaltung der Richtlinie entscheiden. Falls du eine Website betreibst, die sich an Besucher innerhalb der Europäischen Union wendet, solltest du das Thema aufmerksam verfolgen.

Damit die Grundlagen besser verständlich sind, soll es in diesem Artikel um Cookies und Zustände gehen.

Dein Browser benutzt das sogenannte Hypertext Transfer Protokoll (HTTP), um mit dem Webserver, auf dem die Website gehostet wird zu kommunizieren.

Das Programm curl ist eine Art Browser auf der Kommandozeile und man kann diese HTTP Befehle und Kommunikation sichtbar machen.

curl -v -s -o - -X OPTIONS http://fimidi.com
* Rebuilt URL to: http://fimidi.com/
*   Trying 46.232.178.79...
* TCP_NODELAY set
* Connected to fimidi.com (46.232.178.79) port 80 (#0)
> OPTIONS / HTTP/1.1
> Host: fimidi.com
> User-Agent: curl/7.54.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Sun, 13 May 2018 16:06:09 GMT
< Server: Apache
< Allow: GET,HEAD,POST,OPTIONS
< Content-Length: 0
< Content-Type: text/html
< 

In diesem Fall ist es eine einfache Anfrage (GET) an den Server, der für die Domain fimidi.com zuständig ist. Der Client sagt, wer er ist (curl/7.54.0) und dasss er bereit ist jede Datei zu akzeptieren (Accept */*).

Der Server antwortet, sagt ebenfalls seinen Namen (Apache), die Befehle, die er entgegen nimmt (GET,HEAD,POST,OPTIONS), und die Art der Daten, die er an den Browser schickt (text/html). Ausserdem hat er etwas geschickt, denn der HTTP Code ist 200, das heisst ok.

Die beiden verstehen sich!

Sie verstehen sich allerdings genau einmal und dann vergessen sie wieder alles. Beim nächsten Mal müssen sich Browser und Server wieder gegenseitig vorstellen. HTTP ist ein zustandsloses Protokoll. Zustände wie „oh, der war ja schon mal hier“ oder „das ist der mit dem grossen Browserfenster, der einen englischen Firefox unter Windows benutzt“ lassen sich nicht speichern.

Wenn du beispielsweise in einen Schuhladen gehst, dem Verkaufspersonal guten Tag sagst, dir ein paar Schuhe ansiehst und dann wieder gehst, dann könnte es sein, dass dich jemand wieder erkennt wenn du später nochmal in den Laden gehst. So grundsätzlich ist es ja eine gute Idee erkannt zu werden. Man kann einen kleinen Schwatz mit dem Personal machen und kauft vielleicht auch etwas besonders Günstiges. Vielleicht wird man auch zum Stammkunden. So war das „früher“ 🙂 Heute gibt es natürlich Kundenkarten im Schuhladen. Auch wenn dich das Personal nicht kennt, so kannst du doch mit deiner Kundenkarte beweisen, dass du irgendwie enger mit der Firma verbunden bist als Menschen ohne Kundenkarte.

Im Verhältnis zwischen Browser und Server ist ein Cookie gewissermassen die Vorstufe einer Kundenkarte. Wenn die Website das will, dann darf der Server dem Browser ein Cookie übergeben, das der Browser dann auch brav entgegen nimmt und speichert. Der kleine Keks besteht aus einem Variablen Namen und einem Wert.

< set-cookie: SSESSe633124c248c86d9e5461ceb0c7041ae=2APWOWwFPtx16Xd8q2TFK3YaEdFhuS75EVSbhmn0ODA; expires=Mon, 28-May-2018 16:51:34 GMT; Max-Age=2000000; path=/; domain=.fimidi.com; secure; HttpOnly

In diesem Fall wird die Variable mit dem Namen SESSe633124c248c86d9e5461ceb0c7041ae mit dem Wert 2APWOWwFPtx16Xd8q2TFK3YaEdFhuS75EVSbhmn0ODA versehen. Es geht hier um eine Session-ID. Du hast dich auf der Website mit deinem Benutzernamen und Passwort eingeloggt. Die Seite hat dich authentifiziert und will dir nun personalisierte Inhalte zeigen, beispielsweise deinen Profilbereich. Weil das allein mit HTTP Befehlen nicht geht, hat sie dich mit einem Keks gelockt, wie der böse Mann im Park, der kleinen Kindern Schokolade anbietet 🙂 Hier möchte ich klarstellen, dass das natürlich auch die nette Oma sein kann, man weiss es halt nicht. Die Website kann das Cookie der eigenen Domain in deinem Browser lesen und daran erkennen, dass du es bist. Das hat für dich den Vorteil, dass du dich nicht bei jedem Seitenaufruf wieder einloggen musst. Ein interessantes Detail bei dieser Kommunikation ist, dass der Browser jedes Cookie annimmt, wenn man das in den Einstellungen des Browser nicht verboten hat (und wer macht das schon …).

So ein Cookie hat ein Verfallsdatum. Im obigen Fall gilt es bis zum 18. Mai, dann löscht dein Browser es automatisch und du musst dich neu einloggen um wieder so einen Login-Keks zu bekommen. Ausser so langen Zahlenketten lassen sich auch ganz einfach Dinge speichern wie farbe=rot, wenn du die Website gern in der Farbe Rot sehen willst, oder eu-cookie=ja wenn du die Cookie Abfrage akzeptierst hast. Wenn du das Cookie aus dem Browser löschst, muss die Website wieder nachfragen.

Ehrenrührige Websites setzen beispielsweise Cookies mit einem Verfallsdatum von mehreren Jahren ;).

Das Interessante an diesem Prinzip ist, dass ein Cookie eine kleine Textdatei mit Informationen darstellt, die die Website über das HTTP Protokoll auf DEINEM Computer und damit DEINER Festplatte speichert und auch wieder lesen kann. Ein Cookie nimmt nicht viel Platz weg, aber du gibst einer Website über deinen Browser das Recht auf deiner Festplatte etwas zu lesen und zu schreiben.

Das ist ein bisschen vergleichbar mit der Kundenkarte im Schuhladen. Die Kundenkarte nimmst du in Empfang und steckst sie vermutlich selbst in deine Geldbörse. Das Verkaufspersonal nimmt NICHT ungefragt deine Geldbörse und steckt die Kundenkarte dort hinein. Wenn du die Kundenkarte benutzt, dann holst du sie aus deiner Geldbörse heraus und gibst sie dem Personal.

Kundenkarte im Schuhladen
Kundenkarte im Schuhladen

Nun gibt es viele technische Kleinigkeiten zu Cookies, die ich gar nicht aufdröseln möchte. Die Vorstellung, dass jemand ohne mich zu fragen auf meiner Festplatte etwas lesen und schreiben kann ist das wichtige Detail.

Google kann beispielsweise Browser über ein Cookie eindeutig identifizieren. Diese Fähigkeit wurde von der NSA genutzt um Spionagesoftware zu installieren (Geheimdienst-Skandal – NSA späht Internetnutzer mit Google-Cookies aus). Natürlich hat Google da keine Schuld …. oder doch?

Ausser Google kann das technisch jeder und es wird gern von Werbenetzwerken verwendet. Und da sind wir auch schon beim Thema Third Party Cookies. Im Falle der NSA mussten sie Google noch fragen, da ja nur Google auf das Cookie der eigenen Domain google.com zugreifen kann.

Heute ist es allerdings normal, dass auch Third Party Cookies benutzt werden. Im meinem Blog wird beispielsweise ein Cookie von public-api.wordpress.com gesetzt. Das hat mit dem Jetpack Plugin für WordPress zu tun.

Third Party Cookies
Third Party Cookies

Also nochmal langsam: Du rufst mein Blog auf und es wird ein Cookie unter hagen.cocoate.com gesetzt (was ja ok ist) aber auch unter der Domain public-api.wordpress.com (was auch ok ist, aber eben nicht meine Domain ist).

Und nun mal ein Blick in die harte Realität. Ein Aufruf der Website von blick.ch setzt 146 Cookies!

blick.ch
blick.ch

Nach einem einzigen Aufruf dieser Seite können wirklich sehr viele andere auf deine Cookies zugreifen und Benutzerprofile erstellen. Das muss alles nichts Schlechtes sein, es wäre nur gut, so etwas zu wissen und beeinflussen zu können.

Wenn du also nicht willst, dass jemand deine Geldbörse öffnet, deine Kundenkarte herausholt und damit etwas tut, dann schau doch bei der nächsten Cookie-Abfrage mal in die Details.


tl;dr: Cookies sind nichts Schlechtes, aber sie verraten viel über dich.

Autor: hagengraf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

Ein Gedanke zu „Von Cookies und Zuständen“

Kommentar verfassen