Cookie-Sicherheit für Nginx konfigurieren
Schritt-für-Schritt-Anleitung: Secure, HttpOnly und SameSite auf Nginx einrichten — mit proxy_cookie_flags, Cookie-Prefixes und fertigen Konfigurationen zum Kopieren.
Sichere Cookies auf Nginx
Nginx ist der weltweit meistgenutzte Webserver und Reverse Proxy. Die Direktive proxy_cookie_flags (ab Version 1.19.3) macht die Cookie-Absicherung besonders einfach: Eine Zeile in der Konfiguration sichert alle Upstream-Cookies mit Secure, HttpOnly und SameSite ab — ohne Änderungen am Backend-Code.
Diese Anleitung zeigt die Konfiguration in vier Schritten: vom Setzen der Flags über SameSite-Feintuning bis zur Verifizierung. Alle Beispiele sind für Nginx als Reverse Proxy optimiert — die häufigste Produktions-Architektur. Cookie-Sicherheit ist mit 15 von 166 Punkten ein wichtiger Faktor im Wolf-Agents Web Security Check.
Cookie-Flags mit proxy_cookie_flags setzen
Die Direktive proxy_cookie_flags ist seit Nginx 1.19.3 verfügbar und der empfohlene Weg, Cookie-Attribute für Upstream-Cookies zu setzen. Das Tilde-Zeichen (~) matcht alle Cookies, die der Upstream-Server setzt.
# nginx.conf — Cookie-Flags für Upstream-Cookies (ab 1.19.3)
server {
listen 443 ssl;
server_name ihre-domain.de;
location / {
proxy_pass http://backend;
# Alle Cookies des Upstreams absichern
proxy_cookie_flags ~ secure httponly samesite=strict;
}
} Ohne proxy_cookie_flags können Sie proxy_hide_header + add_header als Workaround nutzen. Besser ist es, die Cookie-Flags direkt in der Backend-Anwendung zu setzen.
# Für Nginx-Versionen VOR 1.19.3
# Header-basierte Cookie-Modifikation (Workaround)
location / {
proxy_pass http://backend;
# Upstream-Set-Cookie-Header verstecken und modifiziert neu setzen
proxy_hide_header Set-Cookie;
add_header Set-Cookie $upstream_http_set_cookie always;
}
# Empfehlung: Cookies besser direkt in der Anwendung konfigurieren sudo nginx -t && sudo systemctl reload nginx SameSite-Attribut konfigurieren
Das SameSite-Attribut steuert, ob Cookies bei Cross-Site-Anfragen mitgesendet werden. Strict blockiert alle Cross-Site-Requests (Maximum-Schutz gegen CSRF), Lax erlaubt Top-Level-GET-Navigation (bessere UX bei externen Links). Mit proxy_cookie_flags können Sie verschiedene Cookies unterschiedlich konfigurieren.
# SameSite=Strict für hochsensitive Anwendungen
proxy_cookie_flags ~ secure httponly samesite=strict;
# SameSite=Lax für Standard-Websites (empfohlen)
proxy_cookie_flags ~ secure httponly samesite=lax;
# Gezieltes Matching: Nur bestimmte Cookies absichern
proxy_cookie_flags session secure httponly samesite=strict;
proxy_cookie_flags analytics secure samesite=lax; | Wert | Cross-Site-Verhalten | Empfehlung |
|---|---|---|
Strict | Cookie wird nie bei Cross-Site-Requests gesendet | Banking, Admin-Panels, sensitive APIs |
Lax | Cookie wird bei Top-Level-GET-Navigation gesendet | Standard für die meisten Websites |
None | Cookie wird immer gesendet (benötigt Secure) | Nur für Cross-Site-Embeds / iFrames |
Cookie-Prefixes und Absicherung
Cookie-Prefixes sind ein zusätzlicher Defense-in-Depth-Mechanismus: Der Browser erzwingt Attribute allein aufgrund des Cookie-Namens. __Host- ist die strengste Option — sie verbietet das Domain-Attribut und erzwingt Secure und Path=/. Das verhindert Subdomain-Angriffe.
# Backend muss Cookies mit __Host- oder __Secure- Prefix setzen
# Nginx leitet diese unverändert weiter
# Beispiel: Backend setzt
# Set-Cookie: __Host-session=abc123; Secure; Path=/; HttpOnly; SameSite=Strict
# Nginx fügt via proxy_cookie_flags keine doppelten Flags hinzu,
# wenn sie bereits vorhanden sind (ab 1.19.8)
location / {
proxy_pass http://backend;
proxy_cookie_flags ~ secure httponly samesite=strict;
} Konfiguration verifizieren
Nach dem Reload prüfen Sie, ob die Cookie-Flags korrekt gesetzt werden. Nutzen Sie curl für einen schnellen Check und die Browser DevTools (Application → Cookies) für eine visuelle Prüfung aller Cookie-Attribute.
# 1. Nginx-Konfiguration prüfen
sudo nginx -t
# 2. Konfiguration neu laden (ohne Downtime)
sudo systemctl reload nginx
# 3. Cookie-Flags per curl verifizieren
curl -sI https://ihre-domain.de/login | grep -i set-cookie
# Erwartete Ausgabe:
# Set-Cookie: session=...; Secure; HttpOnly; SameSite=Strict Öffnen Sie DevTools (F12) → Application → Cookies → Ihre Domain. Prüfen Sie die Spalten HttpOnly, Secure und SameSite für jeden Cookie. Session-Cookies müssen bei allen drei Spalten ein Häkchen zeigen.
Auch verfügbar für:
Wie steht Ihre Domain bei Cookie-Sicherheit?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.
Häufig gestellte Fragen
Wie setze ich Cookie-Flags in Nginx?
Ab Nginx 1.19.3 nutzen Sie die Direktive proxy_cookie_flags: proxy_cookie_flags ~ secure httponly samesite=strict; in Ihrem location-Block. Diese Methode setzt die Flags automatisch für alle Cookies, die vom Upstream-Server kommen.
Was ist proxy_cookie_flags und seit welcher Nginx-Version ist es verfügbar?
proxy_cookie_flags ist eine Nginx-Direktive, die seit Version 1.19.3 verfügbar ist. Sie ermöglicht das automatische Setzen von Cookie-Attributen (Secure, HttpOnly, SameSite) für Cookies, die von einem Upstream-Server (proxy_pass) stammen. Das Tilde-Zeichen (~) als Pattern matcht alle Cookies.
Brauche ich einen Nginx-Reload nach Cookie-Änderungen?
Ja. Nach jeder Änderung an der Nginx-Konfiguration müssen Sie die Syntax prüfen (nginx -t) und dann neu laden (systemctl reload nginx). Ein Reload unterbricht keine bestehenden Verbindungen — anders als ein Restart.
Was mache ich bei älteren Nginx-Versionen ohne proxy_cookie_flags?
Bei Nginx-Versionen vor 1.19.3 können Sie proxy_hide_header und add_header nutzen, um Set-Cookie-Header zu modifizieren. Alternativ konfigurieren Sie die Cookie-Flags direkt in Ihrer Backend-Anwendung (z.B. PHP, Node.js, Python).
Kann Nginx Cookies setzen, die nicht vom Upstream kommen?
Nginx selbst setzt keine Cookies — das ist Aufgabe der Anwendung. proxy_cookie_flags modifiziert nur Cookies, die der Upstream bereits setzt. Für eigene Cookies verwenden Sie Ihre Programmiersprache oder ein Nginx-Lua-Modul (OpenResty).
Welchen Einfluss haben Cookie-Flags auf die Nginx-Performance?
Keinen messbaren. proxy_cookie_flags ist ein einfacher String-Match auf Set-Cookie-Header und fügt wenige Bytes hinzu. Der Overhead ist vernachlässigbar, selbst bei tausenden Requests pro Sekunde.