Cookie- und Tracking-Hinweise via PHP

Cookie-Hinweis im Browser

Nicht schön aber europäisch: So könnte er (vielleicht) aussehen, der Hinweis auf die Nutzung von Cookies und Tracking-Software (Mockup)

Nach den Wünschen der s.g. EU-Cookie-Richtlinie (ein Teil der Richtlinie 2009/136/EG) soll ein Nutzer zu Beginn des Website-Nutzungsvorgangs auf den Einsatz von Cookies hingewiesen werden, sofern diese – so habe ich das zumindest verstanden – nicht für die Funktion einer Website nötig sind. Insbesondere zielt diese Richtlinie wohl auf Tracking-Cookies für Website-Analysesoftware und Cookies für das Retargeting seitens Werbetreibender (ich habe übrigens kürzlich als Co-Autor an einem Artikel zum Thema Retargeting mitgewirkt). Da jedoch die Skript-Schnippsel von beispielsweise Google Analytics oder PIWIK ihre Cookies sofort nach dem Laden der Seite ablegen, ist eine vorherige Information des Nutzers über deren Einsatz nicht ohne Umwege machbar. Da mich in letzter Zeit auch hin- und wieder Fragen über mögliche Lösungen diesbezüglich erreichen, habe ich eine kleine Sammlung von PHP-Funktionen für diese Problematik erstellt.

Voraussetzung für die Nutzung

Das ganze Ding basiert auf der Annahme (und es ist wirklich nur eine Annahme – ich bin kein Jurist, sorry) dass Session-Cookies prinzipiell erlaubt sind und keiner vorherigen Zustimmung bedürfen. Schließlich werden diese nur für die Dauer einer Sitzung angelegt und ermöglichen überhaupt erst die Funktion vieler moderner Websites – sie sind also für das Funktionieren der Site notwendig und dienen nicht der Überwachung des Nutzers. Ich zitiere hier mal ein Auszug aus Richtlinie 2009/136/EG, Ziffer 66:

Ausnahmen von der Informationspflicht und der Einräumung des Rechts auf Ablehnung sollten auf jene Situationen beschränkt sein, in denen die technische Speicherung oder der Zugriff unverzichtbar sind, um die Nutzung eines vom Teilnehmer oder Nutzer ausdrücklich angeforderten Dienstes zu ermöglichen.

Das lässt natürlich wieder den üblichen Spielraum für Spekulationen, deswegen möchte ich mich da mal nicht festlegen. Aber ohne irgendwo Daten nutzerbezogen (oder besser: sitzungsbezogen) zu speichern, müsste man ja den geneigten Nutzer der Website auf jeder Unterseite erneut um seine Einwilligung bitten. Gehen wir also mal davon aus, dass Session-Cookies unter die beschriebene Ausnahmeregelung fallen. Ich beschränke mich daher in diesem Artikel und auch in den PHP-Skripten auf die nicht-notwendige Nutzung von Cookies zu Analyse-Zwecken.

Wie funktionierts?

Schritt 1: Hinweis anzeigen, wenn nötig

Nachdem mein Skript via require_once('privacynote.php'); in das eigene PHP-Projekt eingebunden wurde (das wird i.d.R. sicher ein Template für das CMS der Wahl sein), kann man mittels der Funktion PN_ShowNotice('http://example.com');  auf die Verwendung von Cookies und von Analyse-Software hinweisen und auf die eigenen Datenschutzbestimmungen für weitere Infors verlinken. Für Letzteres muss der Funktion eine URL zu den Bestimmungen übergeben werden (im Beispiel: http://example.com). Der Nutzer kann an dieser Stelle der Verwendung der Analyse-Software (und der damit verbundenen Tracking-Cookies) explizit zustimmen. Stimmt er nicht zu, wird dieser Hinweis auf jeder Seite erneut angezeigt (ja – wenn schon penetrant, dann richtig). In diesem Fall wird der Tracking-Code der Analyse-Software (der in eine separate Datei ausgelagert wurde) aber auch nicht geladen – der Nutzer bleibt also unbehelligt. Wo Licht ist, ist auch Schatten.

Schritt 2: Tracking-Code laden, wenn gestattet

Stimmt der Nutzer dem Einsatz der Tracking-Software zu, wird diese Zustimmung in der PHP-Session hinterlegt. Diese muss natürlich bereits gestartet sein; das machen CMS aber oftmals sowieso schon von sich aus. Nun kann die Funktion PN_GetAnalyticsCode('trackingcode.html'); genutzt werden, um den zuvor in eine separate Datei ausgelagerten Tracking-Code in das Dokument zu laden. Diese prüft zunächst in der Session ob die Zustimmung erteilt wurde und lädt anschließend die übergebene Datei (im Beispiel: trackingcode.html, auch Server-Pfade sind möglich).

Schritt 3: Zustimmung widerrufen (optional)

Über die Funktion PN_ApprovalState(); kann der aktuelle Status (Zustimmung erteilt oder nicht) und eine Möglichkeit des Widerrufes ausgegeben werden. Dies Funktion könnte beispielweise auf der Seite der Datenschutzhinweise genutzt werden, um dem Nutzer die Option des nachträglichen Rückzugs zu geben. Wird die Zustimmung widerrufen, wird der entsprechende Eintrag in der Session gelöscht, der Tracking-Code (Schritt 2) nicht mehr geladen und die Hinweismeldung (Schritt 1) wieder angezeigt. Der von der Tracking-Software gesetzte Tracking-Cookie wird aber nicht gelöscht (Cookies können ja nicht domainübergreifend geschrieben oder gelesen werden) – ohne den zugehörigen Tracking-Code ist dieser aber nicht mehr für die Verfolgung eines Nutzers auf der eigenen Site zu gebrauchen.

Die Funktionen im Detail

PN_ShowNotice(‚http://example.com‘);

Gibt in Abhängigkeit des Session-Status eine Hinweismeldung sowie einen Link zu den Datenschutz-Richtlinien der eigenen Website aus. Die URL zu den Datenschutz-Richtlinien wird der Funktion übergeben.

PN_GetAnalyticsCode(‚trackingcode.html‘);

Lädt den in eine externe Datei ausgelagerten Tracking-Code sofern eine Zustimmung erteilt wurde. Der Funktion muss ein include-fähiger Pfad zur Datei übergeben werden.

PN_ApprovalState();

Gibt den aktuellen Status aus (Zustimmung erteilt oder nicht) und bietet eine Möglichkeit, die Zustimmung zu wiederrufen.

PN_IsApproved();

Diese Funktion gibt je nach Status true oder false zurück. Sie kann für eigene Änderungen an der Ausgabe in Abhängigkeit vom Zustimmungsstatus genutzt werden.

Download des Skriptes

Im Download befindet sich die Funktionssammlung (privacynote.php) sowie eine kommentierte Beispiel-Implementierung. Kann man sicher alles noch besser machen – diese Sammlung sollte lediglich als Idee oder Blaupause für eigene Umsetzungen betrachtet werden. Meine Heimat ist das Frontend ;-)

Download: privacynote_v0.1.zip (zipped, 5KB)

Das Skript ist nach besten Wissen getestet und erfüllt in meinem Szenario die gewünschten Anforderungen. Dennoch erfolgt die Nutzung des auf eigene Gefahr! Auch in Sachen rechtlicher Wirksamkeit bzw. Richtigkeit kann ich keine Gewähr übernehmen.

Schreibe einen Kommentar