Clear-Site-Data in PHP konfigurieren
Schritt-für-Schritt-Anleitung: Clear-Site-Data in PHP — Browser-Daten bei Logout gezielt löschen mit header()-Code zum Kopieren.
Clear-Site-Data in PHP
Clear-Site-Data weist den Browser an, gespeicherte Daten zu löschen — Cookies, Cache, localStorage und IndexedDB. Dieser Header wird typischerweise beim Logout gesetzt, um sicherzustellen, dass keine Session-Daten im Browser verbleiben. Mit 2 von 166 Punkten im Wolf-Agents Web Security Check.
In PHP setzen Sie Clear-Site-Data mit header() — aber nur auf der Logout-Seite oder bei Passwort-Reset. Im Gegensatz zu anderen Security-Headern darf dieser Header nicht global per auto_prepend_file gesetzt werden, da er sonst bei jedem Request alle Browser-Daten löscht. Setzen Sie ihn gezielt auf die Endpunkte, die eine Datenbereinigung erfordern.
Clear-Site-Data unterstützt drei Direktiven: "cache" löscht den HTTP-Cache, "cookies" alle Cookies der Domain, und "storage" löscht localStorage, sessionStorage und IndexedDB. Die Wildcard "*" löscht alles. Beachten Sie die doppelten Anführungszeichen — sie sind Teil der Header-Syntax.
Clear-Site-Data in PHP konfigurieren
Drei Varianten: Direkt im Logout-Script, selektives Löschen einzelner Datentypen, und PSR-15-Middleware für Framework-Projekte. Wichtig: Clear-Site-Data wird nur auf Logout- und Reset-Endpoints gesetzt — niemals global.
<?php
// logout.php — Clear-Site-Data bei Logout
// Session beenden
session_start();
session_destroy();
// Browser-Daten komplett löschen
header('Clear-Site-Data: "cache", "cookies", "storage"');
// Redirect zum Login
header('Location: /login', true, 302);
exit; <?php
// Selektives Löschen je nach Kontext
// Nur Cookies löschen (Session-Invalidierung)
header('Clear-Site-Data: "cookies"');
// Nur Cache löschen (nach Deploy)
// header('Clear-Site-Data: "cache"');
// Nur Storage löschen (localStorage, IndexedDB)
// header('Clear-Site-Data: "storage"');
// Alles löschen mit Wildcard
// header('Clear-Site-Data: "*"'); <?php
// src/Middleware/LogoutMiddleware.php — PSR-15
namespace App\Middleware;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
class LogoutMiddleware implements MiddlewareInterface
{
public function process($request, $handler): ResponseInterface
{
$response = $handler->handle($request);
$path = $request->getUri()->getPath();
if ($path === '/logout') {
return $response->withHeader(
'Clear-Site-Data',
'"cache", "cookies", "storage"'
);
}
return $response;
}
} auto_prepend_file auf alle Seiten gesetzt werden. Sonst werden bei jedem Seitenaufruf alle Cookies, der Cache und der Storage gelöscht — die Anwendung wird unbenutzbar. Konfiguration verifizieren
Prüfen Sie den Header auf der Logout-URL. Der Header sollte nur auf Endpunkten erscheinen, die eine Datenbereinigung erfordern. Testen Sie auch, dass normale Seiten den Header nicht setzen.
# Clear-Site-Data prüfen (auf Logout-URL)
curl -sI https://ihre-domain.de/logout | grep -i clear-site-data
# Erwartete Ausgabe:
Clear-Site-Data: "cache", "cookies", "storage"
# Wichtig: Der Header darf NUR auf Logout/Reset-URLs
# gesetzt werden — nicht global per auto_prepend_file!
# Sonst werden bei JEDEM Request alle Daten gelöscht. Häufige Fehler
Headers already sent
Der häufigste PHP-Fehler: header() nach einer Ausgabe aufrufen. Da Clear-Site-Data typischerweise im Logout-Script gesetzt wird, stellen Sie sicher, dass vor dem header()-Aufruf keine HTML-Ausgabe stattfindet.
Anführungszeichen vergessen
Die Werte müssen in doppelten Anführungszeichen stehen: "cache", nicht cache. Ohne Anführungszeichen ignoriert der Browser den Header. In PHP müssen Sie die Anführungszeichen escapen oder einfache Anführungszeichen verwenden.
Global per auto_prepend_file gesetzt
Clear-Site-Data darf nicht global gesetzt werden. Wenn der Header auf jeder Seite erscheint, löscht der Browser bei jedem Seitenaufruf alle Daten. Setzen Sie den Header nur auf Logout-, Reset- und Session-Invalidierungs-Endpunkten.
Nur über HTTPS wirksam
Clear-Site-Data funktioniert nur über HTTPS. Auf HTTP-Verbindungen ignoriert der Browser den Header. Stellen Sie sicher, dass Ihr Logout-Endpoint über HTTPS erreichbar ist — was durch HSTS automatisch der Fall sein sollte.
Compliance-Relevanz
Wie steht Ihre Domain bei Clear-Site-Data?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.