tas2580
Blog über Webentwicklung

Cookie Hinweise

tas2580  

Da ich in dieser Woche mehrmals gefragt wurde was das mit den Cookie Hinweisen im Internet auf sich hat werde ich das hier mal in einem Artikel beschreiben. So kann ich dann in Zukunft einfach hier her verlinken. Auf technische Details wie man Cookies setzt oder einen solchen Cookie Hinweis auf seiner Webseite einbaut werde ich hier bewusst nicht eingehen.


Was sind Cookies?

Ein Cookie besteht aus einem Schlüssel, bzw. Namen um das Cookie zu identifizieren und einem Wert der gespeichert werden soll. HTTP Cookies werden vom Browser verwaltet und in einer Datenbank oder in Textdateien auf dem Computer des Benutzers abgelegt, der Benutzer muss dazu nichts weiter tun. Beim setzen eines Cookies kann eine Gültigkeitsdauer angegeben werden, nach der angegebenen Zeit wird das Cookie vom Browser automatisch wieder gelöscht. Wenn keine Gültigkeitsdauer angegeben wird gilt das Cookie für immer, bzw. bis der Benutzer es manuell löscht. Ein Cookie gilt immer nur für eine Domain, Cookies die von tas2580.net gesetzt wurden können also nur von tas2580.net gelesen werden (Man kann Cookies auch so setzen das sie auch für Subdomains wie phpbb.tas2580.net gelten). Was aber nicht geht ist, dass ein Cookie das von tas2580.net gesetzt wurde von example.com gelesen wird. HTTP-Cookies gelten immer nur für einen Browser, ein Cookie das in Firefox gesetzt wurde kann also von Chrome nicht verwendet werden.

Wenn eine Webseite ein Cookie beim Benutzer anlegt muss die Webseite natürlich die Daten die im Cookie gespeichert werden sollen kennen. Soweit sind Cookies also kein Problem für die Privatsphäre da die Daten der Webseite zu dem Zeitpunkt an dem das Cookie gesetzt wird bekannt sein müssen. Statt die Daten in einem Cookie zu speichern könnte die Webseite die Daten auch einfach in einer internen Datenbank abspeichern. Ein Cookie kann zwar theoretisch Programmcode enthalten, der wird aber nicht vom Browser ausgeführt somit sind Cookies für die Sicherheit unbedenklich.

Wozu dienen Cookies

Ein Computerprogramm das lokal auf dem Rechner läuft kann Daten in Variablen speichern. Diese Daten bleiben dann so lange im Speicher erhalten bis das Programm beendet wird oder der Programmcode sie löscht. Wenn ich also in einem lokalen Programm meinen Namen eingebe kennt das Programm meinen Namen für die komplette Laufzeit, auch wenn das Programm ein neues Fenster öffnet steht mein Name dort zur Verfügung da es sich bei einem neuen Fenster immer noch um das gleiche Programm handelt das den gleichen Speicher verwendet.

Webseiten werden über HTTP(S) ausgeliefert, HTTP ist ein zustandsloses Protokoll, das heißt Daten die bei einem Seitenaufruf generiert wurden stehen beim nächsten Seitenaufruf nicht mehr zur Verfügung. Dazu kommt, dass Webseiten im Gegensatz zu den meisten lokalen Programmen von mehreren Benutzern gleichzeitig benutzt werden und deshalb Daten nicht einfach ohne Zuordnung des Benutzers auf dem Server zwischengespeichert werden können. Das ist erstmal auch gut so denn im Web sollte jede Ressource über eine eindeutige Adresse (URI) erreichbar sein die dann unabhängig davon was der Besucher bisher gemacht hat immer das gleiche anzeigt.

Oft will man aber z.B. eine Anmeldung der Benutzer ermöglichen und dann je nach dem ob der Benutzer angemeldet ist oder nicht verschiedene Inhalte anzeigen. Hier kommen jetzt Cookies in Spiel. Wenn der Benutzer sich anmeldet prüft der Server bzw. das CMS die Anmeldedaten und erstellt bei erfolgreicher Anmeldung eine Sitzung der er eine eindeutige ID zuordnet. Diese ID schreibt der Server nun in ein Cookie beim Besucher, beim nächsten Seitenaufruf wird das Cookie mit der ID vom Browser automatisch wieder an den Webserver mit gesendet so, dass der dann feststellen kann zu welcher Sitzung der Seitenaufruf gehört und entsprechende Inhalte ausliefern kann.

Das Problem mit Cookies

Ich habe oben ja geschrieben, dass ein Cookie nur von der Domain gelesen werden kann die das Cookie auch gesetzt hat und somit auch nur Daten enthalten kann die der Webseite schon bekannt sind. Das Problem ist aber, dass eine Webseite oft nicht nur aus einer Domain besteht, die meisten Webseiten binden Inhalte wie Werbung oder Besucherzähler von anderen Domains ein. Da Werbung im Internet meistens nicht direkt gebucht wird sondern über große Werbenetzwerke läuft hat ein solches Werbenetzwerk recht viele Webseiten auf denen ihr Code eingebunden wird. Ein Werbebanner kann also ein Cookie setzen um einen Besucher eindeutig zu identifizieren, auch wenn sich die IP-Adresse des Besuchers ändert. Jedes mal wenn der Besucher jetzt eine Webseite aufruft die Werbung vom selben Werbenetzwerk einblendet kann das Werbenetzwerk den Besucher eindeutig zuordnen und so ein recht ausführliches Surfprofil des Benutzers erstellen. Für Werbenetzwerke ist das nicht ganz uninteressant denn so können sie die Werbung besser auf die Interessen der Besucher zuschneiden um so höhere Klickraten und somit höhere Einnahmen generieren.

Der Cookie Hinweis

Ursprünglich war gedacht, dass ein Benutzer zustimmen muss bevor eine Webseite Cookies setzt. Da Cookies aber essentieller Bestandteil der meisten Webseiten sind lässt sich das nicht so einfach umsetzen. Man müsste die komplette Anmeldeprozedur so umschreiben das eine Anmeldung erst möglich ist wenn der Benutzer dem setzen von Cookies zugestimmt hat und das würde auch nur die eigenen Cookies betreffen die ja kein Problem sind. Problematischer wird es bei Ressourcen die von externen Domains eingebunden werden. Man müsste die Webseite also erstmal so ausliefern, dass sie nur aus eigenen Inhalten besteht und Werbung oder Besucherzähler erst lädt wenn der Besucher dem setzen von Cookies zugestimmt hat. Auch das lässt sich nicht so ohne weiteres umsetzen da solche Inhalte normalerweise über das HTML Template des CMS eingebunden werden und mit dem Programmcode der Webseite nichts zutun haben. Das würde außerdem dazu führen das dem Betreiber der Webseite Werbeeinnahmen verloren gehen und sein Besucherzähler ungenau wird.

Die Hersteller der meisten CMS programmieren ihr CMS nicht für den EU Markt sondern für den weltweiten Einsatz und kümmern sich deshalb oft nicht um lokale Gesetze. Wenn man sich um alle Gesetze die es zum Betrieb einer Webseite irgendwo auf der Welt gibt kümmern müsste würde das auch sehr viel Programmierzeit benötigen und außerdem den Code extrem aufblähen was eine zukünftige Wartung erschwert und zu Sicherheitslücken führt. Normalerweise werden Funktionen die durch lokale Gesetze erforderlich sind über Plugins eingebaut, da das setzen von Cookies aber nicht irgend eine Funktion ist die man nach belieben ein und ausschalten kann ist es praktisch unmöglich das über ein Plugin zu steuern.

Viele Webseitenbetreiber blenden jetzt einfach einen Hinweis ein der dem Besucher sagt, dass die Webseite Cookies verwendet. Wenn der Besucher auf den "OK-Button" klickt wird ein weiteres Cookie gesetzt das der Webseite sagt sie soll den Hinweis in Zukunft für den Besucher nicht mehr anzeigen. Der Hinweiß führt also nur dazu das noch mehr Cookies gesetzt werden. Alle anderen Cookies werden unabhängig davon gesetzt ob der Besucher den Hinweis gelesen hat oder nicht.

Wie man es besser hätte machen können

Da es technisch beinahe unmöglich ist das Cookie Problem auf der Webseite zu lösen und die ständigen Einblendungen eher nerven sollte man im Browser ansetzen. Der Browser könnte einfach bei der Installation fragen ob man Cookies akzeptieren möchte oder nicht. Die meisten Browser haben eh schon die Möglichkeit Cookies zu blockieren, hier wäre also der Programmieraufwand recht überschaubar und es müssten nur eine Hand voll Browser geändert werden die von Profis programmiert werden statt Millionen von Webseiten die oft von Leien betrieben werden die mit dem umprogrammieren ihrer Webseite überfordert sind. Das würde auch technisch deshalb mehr Sinn manchen da am Ende eh der Browser bestimmt wie er mit Cookies umgeht. Wenn der Browser keine Cookies annimmt ist es auch egal wenn eine Webseite versucht ein Cookie zu setzen.

Diese Webseite hier setzt normalen Besucher übrigens keine Cookies und bindet auch keine Ressourcen von anderen Webseiten ein die Cookies setzen könnten.


Kommentare


Bitte warten ...

Kommentar schreiben

URLs werden automatisch umgewandelt.
[b]DEIN TEXT[/b] für Fett gedruckt
[quote]DEIN ZITAT[/quote] für Zitate
[code]DEIN CODE[/code] für Code
captcha