Clear-Site-Data in Drupal konfigurieren
Browser-Daten beim Logout sicher löschen — EventSubscriber auf der user.logout-Route für Cache, Cookies und Storage.
Clear-Site-Data in Drupal
Clear-Site-Data weist den Browser an, gespeicherte Daten zu löschen: Cache, Cookies, localStorage und sessionStorage. Der Header wird typischerweise nur beim Logout gesetzt, um sicherzustellen, dass nach dem Abmelden keine sensiblen Daten im Browser verbleiben. Im Wolf-Agents Web Security Check bringt er 3 von 166 Punkten.
seckit unterstützt Clear-Site-Data nicht. Sie benötigen einen Custom EventSubscriber, der den Header nur auf der user.logout-Route setzt. Auf allen anderen Seiten darf dieser Header nicht gesetzt werden — er würde den gesamten Browser-Cache löschen.
Der Wolf-Agents Web Security Check erkennt automatisch, ob Clear-Site-Data auf der Logout-Route gesetzt wird. Da der Header nur bei bestimmten Aktionen relevant ist, prüft der Scanner die Gesamtkonfiguration im Kontext aller Security Headers.
Implementierung per EventSubscriber
Der EventSubscriber prüft die aktuelle Route und setzt den Header nur beim Logout.
<?php
// modules/custom/security_headers/src/EventSubscriber/ClearSiteDataSubscriber.php
namespace Drupal\security_headers\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class ClearSiteDataSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents() {
return [KernelEvents::RESPONSE => ['onResponse', 0]];
}
public function onResponse(ResponseEvent $event) {
$request = $event->getRequest();
$route = $request->attributes->get('_route');
// NUR auf der Logout-Route setzen!
if ($route === 'user.logout' ||
$route === 'user.logout.confirm') {
$response = $event->getResponse();
$response->headers->set(
'Clear-Site-Data',
'"cache", "cookies", "storage"'
);
}
}
}Drupal kann je nach Konfiguration zusätzliche Logout-Routen haben — z.B. durch Contrib-Module wie simplesamlphp_auth oder openid_connect. Prüfen Sie mit drush route:list | grep logout alle relevanten Routen und erweitern Sie die Bedingung im EventSubscriber entsprechend.
Verifizierung
Führen Sie einen Logout durch und prüfen Sie den Response-Header im Network-Tab der DevTools. Öffnen Sie die DevTools vor dem Logout und filtern Sie im Network-Tab nach der Logout-URL. Der Clear-Site-Data-Header muss in der Response erscheinen. Prüfen Sie anschließend im Application-Tab, ob Cookies und Storage tatsächlich geleert wurden.
drush cr
# Logout durchführen und in Browser DevTools prüfen:
# Network Tab → Logout-Request → Response Headers
# Erwartete Ausgabe (nur bei Logout!):
# clear-site-data: "cache", "cookies", "storage"Häufige Fehler
Clear-Site-Data erfordert besondere Sorgfalt bei der Route-Erkennung — ein falsch platzierter Header kann die Website unbenutzbar machen.
Clear-Site-Data auf allen Seiten
Wenn der Header auf jeder Seite gesetzt wird, löscht der Browser bei jedem Seitenaufruf den Cache. Die Website wird extrem langsam. Setzen Sie den Header nur auf der Logout-Route.
Route-Name falsch
Der Route-Name user.logout muss exakt stimmen. Prüfen Sie mit drush route:list | grep logout die korrekten Routen-Namen in Ihrer Installation.
Header nur über HTTPS wirksam
Browser ignorieren Clear-Site-Data auf HTTP-Verbindungen. Stellen Sie sicher, dass Ihre Logout-Seite über HTTPS ausgeliefert wird.
EventSubscriber-Priorität zu niedrig
Wenn Drupals Redirect-Subscriber den Logout-Redirect vor Ihrem Subscriber ausführt, wird der Header nicht gesetzt. Erhöhen Sie die Priorität Ihres Subscribers auf 100 oder höher.
Compliance-Relevanz
Clear-Site-Data unterstützt das technische Recht auf Löschung und stellt sicher, dass nach dem Abmelden keine sensiblen Daten im Browser verbleiben.
Zusammenfassung
Clear-Site-Data in Drupal wird ausschließlich per EventSubscriber
auf der user.logout-Route gesetzt. Setzen Sie den
Header niemals auf allen Seiten. Prüfen Sie mit
drush route:list | grep logout alle Logout-Routen
und erhöhen Sie die EventSubscriber-Priorität, damit der Header
vor dem Redirect gesetzt wird.
Wie steht Ihre Domain bei Clear-Site-Data?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.