Entwicklung

HTTP-Security-Header Checkliste (mit Konfigurationen zum Kopieren)

Ein paar Response-Header blockieren ganze Angriffsklassen – Clickjacking, MIME-Sniffing, Protokoll-Downgrades und einen großen Teil von XSS – und kosten fast nichts. Hier sind die Header, die sich lohnen, sichere Startwerte und wie du den kniffligen Kandidaten (CSP) einführst, ohne deine Seite zu zerschießen.

Fortgeschritten · 8 Min. Lesezeit · Aktualisiert am 30. Oktober 2026

HTTP-Security-Header Checkliste (mit Konfigurationen zum Kopieren)

Die Checkliste

HeaderSicherer WertSchützt vor
Strict-Transport-Securitymax-age=31536000; includeSubDomainsHTTPS-Downgrade und Cookie-Diebstahl im öffentlichen WLAN
Content-Security-PolicyZuerst im Report-Only-Modus starten (siehe unten)XSS, eingeschleuste Skripte, Datenabfluss
X-Content-Type-OptionsnosniffBrowser, die Uploads als Skripte ausführen
CSP frame-ancestors'self' (oder X-Frame-Options: SAMEORIGIN)Clickjacking
Referrer-Policystrict-origin-when-cross-originWeitergabe vollständiger URLs (Tokens, IDs) an andere Seiten
Permissions-Policycamera=(), microphone=(), geolocation=()Drittanbieter-Skripte, die Gerätefunktionen nutzen

Welche dieser Header deine Seite aktuell sendet und welche Note sie bekommt, siehst du im Security Headers Checker.

HSTS: klein anfangen

Sobald ein Browser HSTS sieht, verweigert er reines HTTP für die gesamte max-age-Laufzeit. Stelle vorher sicher, dass jede Subdomain über HTTPS funktioniert (Zertifikate prüfst du mit dem SSL Checker), starte mit max-age=300 und erhöhe den Wert dann auf ein Jahr. Füge preload hinzu und trage dich erst in die HSTS-Preload-Liste ein, wenn du sicher bist – das Entfernen dauert Monate.

Content-Security-Policy, ohne dass etwas kaputtgeht

CSP legt fest, woher Skripte, Styles, Bilder und Verbindungen stammen dürfen. Führe sie im Report-Only-Modus ein, der Verstöße protokolliert, aber nichts blockiert:

Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self' https://www.googletagmanager.com; img-src 'self' data: https:; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; report-uri /csp-report

Beobachte eine Woche lang die Browser-Konsole und deinen Report-Endpunkt, ergänze die Quellen, die du wirklich nutzt, und ändere dann den Header-Namen in Content-Security-Policy. Verzichte bei Skripten auf 'unsafe-inline'; nutze für eigene Inline-Skripte stattdessen Nonces oder Hashes. Baue die Richtlinie Quelle für Quelle mit dem CSP Generator.

Konfigurationen

Nginx (innerhalb von server; always sorgt dafür, dass die Header auch auf Fehlerseiten erhalten bleiben):

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Content-Security-Policy "frame-ancestors 'self'" always;

Apache (.htaccess, mit mod_headers):

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"

Vercel (vercel.json):

{ "headers": [ { "source": "/(.*)", "headers": [
  { "key": "Strict-Transport-Security", "value": "max-age=31536000; includeSubDomains" },
  { "key": "X-Content-Type-Options", "value": "nosniff" },
  { "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" }
] } ] }

Vollständige Server-Konfigurationen erstellst du mit dem Nginx Config Generator oder dem .htaccess Generator.

Header, die du weglassen kannst

X-XSS-Protection ist veraltet – moderne Browser haben den Filter, den er steuerte, entfernt, und 0 ist der empfohlene Wert, falls du ihn überhaupt noch sendest. Expect-CT ist abgekündigt. Das Ausblenden von Server und X-Powered-By ist gute Hygiene, bietet aber keinen echten Schutz.

Häufige Fragen

Welche Security-Header sind am wichtigsten?
Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options: nosniff und frame-ancestors (oder X-Frame-Options). Referrer-Policy und Permissions-Policy sind schnelle Gewinne.
Kann eine Content-Security-Policy meine Seite kaputt machen?
Ja, wenn du sie sofort erzwingst. Starte mit Content-Security-Policy-Report-Only, behebe, was dort gemeldet wird, und erzwinge sie erst dann.
Wird X-Frame-Options noch benötigt?
In modernen Browsern ersetzt CSP frame-ancestors diesen Header. Beide zu senden ist für ältere Browser kein Problem.

Weiterlesen