Clear-Site-Data für IIS konfigurieren
Schritt-für-Schritt-Anleitung: Browser-Daten beim Logout in IIS löschen — Cache, Cookies und Storage per ASP.NET Core, URL Rewrite und PowerShell.
Clear-Site-Data in IIS
Clear-Site-Data weist den Browser an, gespeicherte Daten zu löschen — Cache, Cookies und Storage. Mit 3 von 166 Punkten im Wolf-Agents Web Security Check ist der Header besonders wertvoll für Logout-Flows: Er stellt sicher, dass nach dem Abmelden keine sensiblen Daten im Browser verbleiben.
In IIS setzen Sie den Header per ASP.NET Core Middleware auf der Logout-Route. Für statische Sites oder Classic ASP verwenden Sie eine URL Rewrite outboundRule, die den Header nur auf der Logout-URL setzt — nicht global, da sonst bei jedem Seitenaufruf alle Browser-Daten gelöscht wuerden.
Besonders in Unternehmensumgebungen mit IIS ist Clear-Site-Data kritisch: Shared Workstations in Büros, öffentliche Terminals oder BYOD-Geräte können nach dem Logout noch sensible Daten im Browser-Cache enthalten. Der Header eliminiert dieses Risiko zuverlässig.
ASP.NET Core Middleware (empfohlen)
Für ASP.NET Core Anwendungen setzen Sie den Header direkt in der Logout-Action. Dies ist die sauberste Methode, da der Header nur beim Logout gesendet wird. Für mehrere Logout-Routen nutzen Sie die Middleware-Variante.
// ASP.NET Core — Clear-Site-Data beim Logout
// In der Logout-Action oder Middleware
app.MapPost("/logout", async (HttpContext context) =>
{
// Session beenden
await context.SignOutAsync();
// Browser-Daten löschen
context.Response.Headers.Append(
"Clear-Site-Data",
""cache", "cookies", "storage"");
return Results.Redirect("/");
}); // ASP.NET Core Middleware — Multi-Route Clear-Site-Data
// Nuetzlich wenn mehrere Logout-Endpunkte existieren
app.Use(async (context, next) =>
{
await next();
// Nur auf Logout-Routen den Header setzen
var path = context.Request.Path.Value?.ToLower();
var logoutPaths = new[] {
"/logout",
"/account/logout",
"/api/auth/signout"
};
if (logoutPaths.Any(p => path?.StartsWith(p) == true))
{
context.Response.Headers.Append(
"Clear-Site-Data",
""cache", "cookies", "storage"");
}
}); URL Rewrite für statische Sites
Für Anwendungen ohne ASP.NET Core (Classic ASP, statische Sites) verwenden Sie eine URL Rewrite outboundRule mit preCondition auf die Logout-URL. Das URL Rewrite Module muss separat installiert werden.
<!-- web.config — Clear-Site-Data per URL Rewrite -->
<!-- Für statische Sites oder Classic ASP -->
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Clear-Site-Data on Logout"
preCondition="IsLogoutPage">
<match
serverVariable="RESPONSE_Clear-Site-Data"
pattern=".*" />
<action type="Rewrite"
value=""cache", "cookies", "storage"" />
</rule>
</outboundRules>
<preConditions>
<preCondition name="IsLogoutPage">
<add input="{REQUEST_URI}"
pattern="^/logout" />
</preCondition>
</preConditions>
</rewrite>
</system.webServer>
</configuration> PowerShell-Deployment für Server Core
Auf Windows Server Core ohne GUI deployen Sie die URL Rewrite outboundRule per PowerShell. Das Script prüft zuerst, ob das URL Rewrite Module installiert ist, und konfiguriert die Server-Variable für den Response-Header.
# PowerShell — URL Rewrite outboundRule per Script deployen
# Ideal für Windows Server Core ohne GUI
$sitePath = 'MACHINE/WEBROOT/APPHOST/Default Web Site'
# Prüfen ob URL Rewrite Module installiert ist
$rewriteModule = Get-WebGlobalModule |
Where-Object { $_.Name -eq "RewriteModule" }
if (-not $rewriteModule) {
Write-Host "URL Rewrite Module nicht installiert!" -ForegroundColor Red
Write-Host "Download: https://www.iis.net/downloads/microsoft/url-rewrite"
exit 1
}
# Server-Variable für den Response-Header erlauben
Add-WebConfigurationProperty -pspath $sitePath \
-filter "system.webServer/rewrite/allowedServerVariables" \
-name "." -value @{
name = 'RESPONSE_Clear-Site-Data'
}
Write-Host "Clear-Site-Data Server-Variable konfiguriert." Selektive Datentypen löschen
Nicht immer müssen alle Daten gelöscht werden. Je nach Anwendungsfall können Sie gezielt nur Cache, Storage oder Cookies löschen. Der Wildcard-Wert "*" löscht alles auf einmal. Beachten Sie: executionContexts beendet auch Service Workers und kann Progressive Web Apps zurücksetzen.
// ASP.NET Core — Selektive Datentypen löschen
// Nur Cache löschen (z.B. nach Content-Update)
context.Response.Headers.Append(
"Clear-Site-Data",
""cache"");
// Cache + Storage löschen (Cookies behalten für Redirect)
context.Response.Headers.Append(
"Clear-Site-Data",
""cache", "storage"");
// Alles löschen inkl. executionContexts (Service Workers)
context.Response.Headers.Append(
"Clear-Site-Data",
""cache", "cookies", "storage", "executionContexts"");
// Wildcard: Alle Datentypen auf einmal
context.Response.Headers.Append(
"Clear-Site-Data",
""*""); Header verifizieren
Prüfen Sie den Header auf der Logout-Route. Er darf nur dort erscheinen, nicht auf anderen Seiten. Testen Sie beide Varianten: Die Logout-Route muss den Header senden, die Startseite darf ihn nicht senden.
# Logout-Route prüfen (Header muss vorhanden sein)
curl -sI -X POST https://ihre-domain.de/logout |
Select-String "Clear-Site-Data"
# Erwartet: Clear-Site-Data: "cache", "cookies", "storage"
# Normale Seite prüfen (Header darf NICHT vorhanden sein)
curl -sI https://ihre-domain.de/ |
Select-String "Clear-Site-Data"
# Erwartet: Kein Ergebnis
# Browser-Test nach Logout:
# DevTools (F12) → Application → Local Storage
# Alle Eintraege müssen nach Logout leer sein Häufige Fehler
Global statt auf Logout-Route
Clear-Site-Data als globaler customHeader löscht bei jedem Seitenaufruf alle Daten. Die Anwendung wird unbenutzbar, da Sessions und Cache ständig zurückgesetzt werden. Verwenden Sie den Header ausschließlich auf der Logout-Route.
Firefox löscht keine Cookies
Firefox ignoriert "cookies" in Clear-Site-Data teilweise. Stellen Sie sicher, dass Ihre Logout-Logik Cookies auch serverseitig invalidiert (Session löschen, Cookie-MaxAge auf 0 setzen).
Nur über HTTPS wirksam
Browser ignorieren Clear-Site-Data über HTTP-Verbindungen komplett. Stellen Sie sicher, dass Ihre Logout-Route ausschließlich über HTTPS erreichbar ist und HTTP-Requests per HSTS oder Redirect umgeleitet werden.
URL Rewrite Module fehlt
Die outboundRule-Methode benötigt das URL Rewrite Module, das nicht standardmäßig mit IIS installiert wird. Ohne das Modul wird die Rule ignoriert und der Header nicht gesetzt. Laden Sie es von der offiziellen IIS-Download-Seite.
Compliance-Relevanz
Clear-Site-Data stellt sicher, dass nach einem Logout keine sensiblen Daten im Browser verbleiben. DSGVO Artikel 17 (Recht auf Löschung) und NIS2 fordern den Schutz personenbezogener Daten — Clear-Site-Data ist eine technische Umsetzung dieser Anforderung. Der Wolf-Agents Web Security Check bewertet Clear-Site-Data mit bis zu 3 Punkten.
Wie steht Ihre Domain bei Clear-Site-Data?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.