Clear-Site-Data für AWS CloudFront konfigurieren
Browser-Daten beim Logout per CloudFront Function oder Lambda@Edge löschen — Cache, Cookies und Storage sicher räumen auf AWS.
Clear-Site-Data auf AWS CloudFront
Der Clear-Site-Data-Header weist den Browser an, gespeicherte Daten zu löschen — Cache, Cookies und/oder Storage. Er wird typischerweise nur auf der Logout-Route gesetzt, um nach dem Abmelden alle Session-Daten aus dem Browser zu entfernen. Clear-Site-Data ist mit 3 von 166 Punkten ein Faktor im Wolf-Agents Web Security Check.
Auf AWS CloudFront gibt es zwei Ansätze: Eine CloudFront Function prüft den URI im Viewer-Response Event und setzt den Header nur auf Logout-Routen. Für komplexere Szenarien erkennt Lambda@Edge Logout-Responses anhand von Origin-Headern oder Status-Codes. Beide Varianten stellen sicher, dass der Header nicht auf normalen Seiten erscheint.
Wichtig: Clear-Site-Data darf niemals in der Default-Response-Headers-Policy stehen. Andernfalls werden bei jedem Seitenaufruf alle Cookies und der Cache gelöscht — die Website wird unbenutzbar.
Clear-Site-Data auf AWS CloudFront konfigurieren
Die CloudFront Function prüft den URI und setzt den Clear-Site-Data-Header nur auf Logout-Routen. Die Werte "cache", "cookies" und "storage" müssen in Anführungszeichen stehen. Für komplexere Logout-Logik (z.B. Origin-basierte Erkennung) nutzen Sie Lambda@Edge.
// CloudFront Function — Clear-Site-Data auf Logout
// Event: Viewer Response
function handler(event) {
var response = event.response;
var request = event.request;
// Nur auf Logout-Routen setzen
if (request.uri === '/logout'
|| request.uri === '/api/auth/logout'
|| request.uri === '/api/auth/signout') {
response.headers['clear-site-data'] = {
value: '"cache", "cookies", "storage"'
};
}
return response;
} // Lambda@Edge — Logout-Erkennung per Origin-Response
// Event: Origin Response
exports.handler = async (event) => {
const request = event.Records[0].cf.request;
const response = event.Records[0].cf.response;
// Logout-Route erkennen
const isLogout = request.uri.startsWith('/logout')
|| request.uri.startsWith('/api/auth/logout');
// Alternativ: Logout per Origin-Header erkennen
const originFlag = response.headers['x-clear-site-data'];
if (isLogout || originFlag) {
response.headers['clear-site-data'] = [{
key: 'Clear-Site-Data',
value: '"cache", "cookies", "storage"'
}];
// Internes Flag entfernen
delete response.headers['x-clear-site-data'];
}
return response;
}; CloudFront Functions sind schneller (sub-Millisekunde), günstiger und laufen auf allen Edge Locations. Lambda@Edge bietet mehr Funktionalität (externe API-Calls, größeres Code-Limit), wird aber ausschließlich in us-east-1 deployed — relevant für DSGVO-Compliance.
Header verifizieren
Prüfen Sie, dass der Clear-Site-Data-Header nur auf der Logout-Route erscheint und auf normalen Seiten fehlt. Bei CloudFront-gecachten Responses erstellen Sie eine Invalidierung, um alte Responses ohne den Header zu entfernen. Der Wolf-Agents Web Security Check prüft den Header automatisch.
# Clear-Site-Data auf Logout-Route prüfen
curl -sI https://ihre-domain.de/logout | grep -i clear-site-data
# Erwartete Ausgabe:
clear-site-data: "cache", "cookies", "storage"
# POST-Variante der Logout-Route
curl -sI -X POST https://ihre-domain.de/api/auth/logout | grep -i clear-site-data
# Sicherstellen: Header NICHT auf normalen Seiten
curl -sI https://ihre-domain.de | grep -i clear-site-data
# Erwartete Ausgabe: (leer — kein Header)
# CloudFront-Invalidierung bei gecachten Responses
aws cloudfront create-invalidation \
--distribution-id E1234567890 \
--paths "/logout" "/api/auth/logout" # terraform/clear-site-data.tf
resource "aws_cloudfront_function" "clear_site_data" {
name = "clear-site-data-logout"
runtime = "cloudfront-js-2.0"
comment = "Clear-Site-Data auf Logout-Route"
publish = true
code = file("functions/clear-site-data.js")
}
# Function an Distribution anhängen
resource "aws_cloudfront_distribution" "main" {
default_cache_behavior {
function_association {
event_type = "viewer-response"
function_arn = aws_cloudfront_function.clear_site_data.arn
}
}
}
# Alternative: Separates Behavior nur für /logout
resource "aws_cloudfront_response_headers_policy" "logout" {
name = "logout-clear-site-data"
custom_headers_config {
items {
header = "Clear-Site-Data"
value = "\"cache\", \"cookies\", \"storage\""
override = true
}
}
} Häufige Fehler
Header in Default-Policy gesetzt
Clear-Site-Data in der Standard-Response-Headers-Policy löscht bei jedem Seitenaufruf alle Cookies und den Cache. Die Website wird unbenutzbar. Verwenden Sie eine CloudFront Function mit URI-Prüfung oder ein separates Behavior.
Anführungszeichen in Terraform escaped
In Terraform müssen doppelte Anführungszeichen innerhalb eines Strings escaped werden: \\"cache\\", \\"cookies\\". Ohne korrekte Escapierung generiert Terraform einen ungültigen Header-Wert.
CloudFront-Cache liefert alten Response
Nach Deployment der CloudFront Function liefert der Cache möglicherweise noch Responses ohne den Header. Erstellen Sie eine Invalidierung für die Logout-Route: aws cloudfront create-invalidation.
Viewer-Response vs. Origin-Response verwechselt
CloudFront Functions unterstützen nur Viewer-Events. Für Origin-Response benötigen Sie Lambda@Edge. Wenn Sie die Function am falschen Event-Typ anhängen, wird der Header nicht gesetzt.
Compliance-Relevanz
DSGVO (Art. 17 — Recht auf Löschung) erfordert die technische Umsetzung der Datenlöschung — Clear-Site-Data entfernt personenbezogene Daten aus dem Browser beim Logout. Beachten Sie bei Lambda@Edge die DSGVO-Implikation: Die Funktion wird in us-east-1 deployed, verarbeitet aber keine personenbezogenen Daten — sie setzt nur einen Response-Header. PCI DSS verlangt die sichere Beendigung von Sessions. Der Wolf-Agents Web Security Check bewertet Clear-Site-Data mit bis zu 3 Punkten und prüft die korrekte Konfiguration auf der Logout-Route.
Wie steht Ihre Domain bei Clear-Site-Data?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.