Man muss ja auch nochmal unterscheiden zwischen einem "normalen" Browser-Cookie und einem Session-Cookie.
Die Inhalte des Session-Cookies werden auf dem Server in einer Textdatei gespeichert & die Inhalte der Browser-Cookies in einer Textdatei (Chrome nutzt hier SQLite) auf dem Rechner.
Browser-Cookie:
Contao setzt die Browser-Cookies in der System.php über die Methode "setCookie", welche letztendlich die PHP-Funktion "setcookie" aufruft. Dort gibt es einen Callback/Hook mit gleichem Namen über den ein Entwickler das setzen eines Cookies abfangen könnte. Ein negativer Ablauf würde diesen Cookies also gar nicht erst setzen bzw. bereits gesetzte löschen.
Hier könnte ich mir eine Erweiterung vorstellen, die aus einem Backend-Modul besteht. Als Core-Funktion wäre es sicherlich auch sehr cool. Das könnte ein weiterer Grund für Nutzer sein, auf Contao zu setzen.
Auf jeden Fall könnte man in diesem BE-Modul beliebig viele Einträge erstellen, die aus einem internen Namen und dem eigentlichen Cookie-Key bestehen.
Den Cookie-Key könnte man als Nutzer über den Browser herausfinden. Es könnten aber auch vorgefertigte Keys bereit stehen - ggf. mit Erläuterungen, was dann nicht mehr funktioniert. Die Backend-Cookies sollten wohl abgefangen werden, damit man sich nicht ausschließt.
Über die erwähnte Hook könnte die Erweiterung dann die gespeicherten Cookie-Keys durchgehen. Wenn der geradezu setzende Cookie-Key übereinstimmt, wird der Expire-Parameter auf z.B. time() - 3600 gestellt, was das setzen des Cookies verhindern würde.
Ob Dritt-Entwickler die Contao-Funktion zum Setzen von Cookies nutzen, kann man natürlich nicht immer wissen. Aber das ist ein anderes Thema. Das gleiche gilt natürlich auch für Cookies oder LocalStorage Objekte, die über JavaScript gesetzt wurden.
Session-Cookie:
Diesen nutzt Contao für Formulare, den Frontend-Login oder jegliche andere Logik im Front- und Backend.
Wenn man nun nur noch einen Session-Cookie nutzt, muss aber auch hier der Browser irgendwie erkannt werden, weshalb auch hier ein Cookie bei dem Benutzer/Browser gespeichert wird. Dieser beinhaltet aber nur den Namen "PHPSESSID" mit einer Kennung.
Visitenkarten-Websites oder andere kleine Seiten ohne jeglicher Logik könnten aber auch darauf verzichten.
Der Session-Cookie wird über die PHP-Funktion session_start gesetzt und haut normalerweise auch direkt noch den besagte Cookie raus.
Das ist eigentlich auch super. Einige werden sich noch an Applikationen (z.B. Foren) von früher erinnern, wo dann die Session-ID über Links weitergegeben wurden. Wenn man dann den Link seinem Kumpel gegeben hat, war derjenige unter deiner Identität eingeloggt.
Den Session-Cookie kann man in der app/config/config.yml deaktivieren:
Code:
framework:
session:
use_cookies: false
Damit wäre Contao im Frontend bereits komplett frei von Cookies. Ein Anmelden oder sonstige Logik wird nicht funktionieren, da der Anfrage-Token aus Formularen nicht übertragen werden kann -> Fehlermeldung.
Das ist allerdings eine globale Symfony Einstellung. D.h. ein Login ins Backend ist auch nicht mehr möglich.
Auch wenn Session-Cookies kein Problem für die DSGVO sind, fände ich dies nur für das Frontend ein interessantes Privacy-Feature.
Hierfür müsste aber der Contao-Core entsprechend umgebaut werden.
Und das ist nicht gerade wenig, wenn man danach sucht.
Ich vermute aber auch, dass dies zumindest bis zur neuen e-Privacy Verordnung egal ist.
Ich schreibe "vermute", weil ich kein Anwalt bin & niemand auf mich hören darf. Aber die Quellen [1] [2] sagen genau dies aus.
Ein Session-Cookie ist zwar personenbezogen, aber als Websitebetreiber darf ich diese Daten verarbeiten da sie zur Wahrung der berechtigten Interessen des Verantwortlichen gehören. Ich habe ein berechtigtes Interesse, dass der Nutzer ohne Sicherheitsbedenken meine Formulare nutzen kann. Außerdem werden dadurch keine Interessen, Grundrechte oder Grundfreiheiten des Website-Besuchers verletzt.
Viel mehr würde ich mir Gedanken um die externen Cookies machen. Also weg mit den Youtube-Iframes und Apis. Und raus mit den Social-Plugins. Lieber ein Bild vom Video/Social-Dienst, dass es in einem neuen Fenster öffnet, oder per JavaScript erst aktiviert. In dem Fall muss aber auch die Datenschutzerklärung wasserfest sein. Und über Google-Fonts (oder andere Datensammlerdienste) können wir uns sicher noch ausgiebig in einem anderen Thema unterhalten