Sichere Cookies für IIS konfigurieren
Schritt-für-Schritt-Anleitung: Cookie-Flags in IIS einrichten — httpCookies, sessionState und URL Rewrite outboundRules für maximale Cookie-Sicherheit.
Cookie-Sicherheit in IIS
Sichere Cookies sind mit 15 von 166 Punkten ein wichtiger Faktor im Wolf-Agents Web Security Check. Jeder Cookie muss die Flags Secure, HttpOnly und SameSite tragen, um Session-Hijacking, XSS-basiertes Cookie-Stealing und CSRF-Angriffe zu verhindern.
IIS bietet zwei Wege: Die system.web/httpCookies-Konfiguration für ASP.NET-eigene Cookies und URL Rewrite outboundRules als Catch-All für alle Set-Cookie-Header — auch von Drittanbieter-Modulen, die eigene Cookies setzen.
httpCookies in system.web konfigurieren
Die httpCookies-Einstellung in system.web gilt für alle ASP.NET-eigenen Cookies: Session-Cookies, Forms-Authentication-Cookies und Role-Manager-Cookies. Sie ist der erste Schutzlayer.
<!-- web.config — Globale Cookie-Einstellungen -->
<configuration>
<system.web>
<!-- Globale Cookie-Sicherheit -->
<httpCookies
httpOnlyCookies="true"
requireSSL="true"
sameSite="Strict" />
<!-- Session-Cookie-Einstellungen -->
<sessionState
cookieless="false"
cookieSameSite="Strict" />
<!-- Forms Authentication Cookie -->
<authentication mode="Forms">
<forms
requireSSL="true"
cookieSameSite="Strict" />
</authentication>
</system.web>
</configuration> # PowerShell — Cookie-Sicherheit konfigurieren
$sitePath = 'MACHINE/WEBROOT/APPHOST/Default Web Site'
# httpCookies konfigurieren
Set-WebConfigurationProperty -pspath $sitePath \
-filter "system.web/httpCookies" \
-name "httpOnlyCookies" -value $true
Set-WebConfigurationProperty -pspath $sitePath \
-filter "system.web/httpCookies" \
-name "requireSSL" -value $true
Set-WebConfigurationProperty -pspath $sitePath \
-filter "system.web/httpCookies" \
-name "sameSite" -value "Strict"
Write-Host "Cookie-Sicherheit konfiguriert." URL Rewrite outboundRules als Catch-All
Drittanbieter-Module und ISAPI-Filter können Cookies setzen, die system.web/httpCookies nicht erfasst. Die URL Rewrite outboundRule fügt Sicherheits-Flags zu jedem Set-Cookie-Header hinzu — unabhängig von der Quelle.
<!-- web.config — URL Rewrite outboundRules -->
<!-- Fügt Secure, HttpOnly und SameSite zu ALLEN Cookies hinzu -->
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<!-- Secure-Flag zu allen Cookies -->
<rule name="Add Secure to Cookies"
preCondition="HTTPS">
<match serverVariable="RESPONSE_Set_Cookie"
pattern="^(.*)$" />
<action type="Rewrite"
value="{R:1}; Secure; HttpOnly; SameSite=Strict" />
</rule>
</outboundRules>
<preConditions>
<preCondition name="HTTPS">
<add input="{HTTPS}" pattern="on" />
</preCondition>
</preConditions>
</rewrite>
</system.webServer>
</configuration> Secure oder SameSite tragen, erhalten die Flags doppelt. Das ist laut RFC valide, aber unschön. Für präzisere Kontrolle verwenden Sie ein Regex-Pattern, das vorhandene Flags erkennt. Cookie-Konfiguration verifizieren
Prüfen Sie die Cookie-Flags in den Browser DevTools unter Application > Cookies oder per curl. Jeder Cookie sollte Secure, HttpOnly und SameSite=Strict (oder Lax) tragen.
# Set-Cookie-Header prüfen
curl -sI https://ihre-domain.de/login | Select-String "Set-Cookie"
# Erwartete Flags in jedem Cookie:
# Set-Cookie: .ASPXAUTH=...; Secure; HttpOnly; SameSite=Strict
# Set-Cookie: ASP.NET_SessionId=...; Secure; HttpOnly; SameSite=Strict Häufige Fehler
SameSite=None ohne Secure
Browser blockieren SameSite=None ohne Secure-Flag. Wenn Sie Cross-Site-Cookies benötigen (z.B. für OAuth), müssen beide Attribute gesetzt sein.
Doppelte Cookie-Flags
Die outboundRule und httpCookies zusammen können doppelte Flags produzieren. Das ist valide, aber unübersichtlich. Nutzen Sie die outboundRule als primäre Methode.
Session-Cookie ohne HttpOnly
Ohne httpOnlyCookies="true" ist der ASP.NET_SessionId-Cookie per JavaScript auslesbar. Ein XSS-Angriff kann dann die Session stehlen.
Compliance-Relevanz
PCI DSS 4.0 Requirement 6.2.4 verlangt sichere Cookie-Konfiguration. OWASP listet unsichere Cookies als Teil der Top-10-Risiken. Der Wolf-Agents Web Security Check prüft alle drei Cookie-Flags und bewertet die Konfiguration pro Cookie individuell.
Wie steht Ihre Domain bei Cookies?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.