Cookie-Consent ohne Nervfaktor

Cookie-Consent-Banner sind meistens schlecht umgesetzt. Entweder technisch falsch oder so gestaltet dass sie Benutzer zermürben bis sie alles akzeptieren. Beides ist keine gute Lösung.

Was tatsächlich Consent braucht

Nicht alle Cookies brauchen Zustimmung.
Technisch notwendige Cookies — Session-ID, CSRF-Token, Login-Status — sind ohne Consent erlaubt.
Alles was Tracking, Analytics oder Marketing betrifft braucht explizite Zustimmung.

Wenn das Projekt kein Google Analytics und keine Werbenetzwerke einbindet ist die Consent-Pflicht überschaubar.

Einfache Umsetzung in PHP

function hasConsent(string $category): bool
{
    if (!isset($_COOKIE['consent'])) return false;
    $consent = json_decode($_COOKIE['consent'], true);
    return !empty($consent[$category]);
}
function setConsent(categories) {
    document.cookie = 'consent=' + JSON.stringify(categories)
        + '; max-age=' + (365 * 86400)
        + '; path=/; SameSite=Lax; Secure';
    location.reload();
}

Das Banner

<div id="consent-banner" style="display:none">
  <p>Diese Seite verwendet Cookies für Analyse und Komfort.</p>
  <button onclick="setConsent({analytics:true})">Alle akzeptieren</button>
  <button onclick="setConsent({analytics:false})">Nur notwendige</button>
</div>

<script>
if (!document.cookie.includes('consent=')) {
    document.getElementById('consent-banner').style.display = 'block';
}
</script>

Dark Patterns vermeiden

  • "Alle akzeptieren" und "Ablehnen" gleich groß und gleich auffällig
  • Kein Pre-Ticking von optionalen Kategorien
  • Ablehnen darf nicht mehr Klicks kosten als Akzeptieren

Aufsichtsbehörden schauen genau auf diese Dinge. Der Aufwand für ein sauberes Banner ist überschaubar.

Analytics ohne Consent

Wer trotzdem Nutzungsstatistiken will ohne Consent zu brauchen: serverseitiges Logging der Seitenaufrufe (nur anonymisierte IP, kein Fingerprinting, kein Cross-Site-Tracking).
Das fällt unter berechtigtes Interesse und braucht keinen Consent-Banner.