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.

IIS · Schritt für Schritt

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.

1 Schritt 1 von 3

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 Produktiv
<!-- 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 Alternative
# 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."
2 Schritt 2 von 3

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
<!-- 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>
Die outboundRule hängt die Flags an jeden Set-Cookie-Header an. Cookies, die bereits 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.
3 Schritt 3 von 3

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.

PowerShell / Terminal Verifizieren
# 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.