SiteScan.top

HTTP-Security-Header: das Minimum, das heute gesetzt gehört

CSP, HSTS, X-Content-Type-Options und Co.: was wirklich schützt, was veraltet ist und in welcher Reihenfolge man es ohne Ausfall einführt.

Sicherheit · Veröffentlicht: 10. Juni 2026 · 3 Min. Lesezeit · Марк Лебедев

Security-Header sind einer der seltenen Fälle, in denen ein paar Zeilen Konfiguration ganze Angriffsklassen schließen. Und einer der seltenen Fälle, in denen eine unbedachte Einführung die Website in Sekunden zerlegt. Die Reihenfolge ist also so wichtig wie der Inhalt.

Fangen Sie mit den ungefährlichen an

Diese drei lassen sich fast risikofrei setzen:

X-Content-Type-Options: nosniff — verbietet dem Browser, den Inhaltstyp zu raten. Schließt das Szenario, in dem eine hochgeladene „Textdatei" als Skript ausgeführt wird.

Referrer-Policy: strict-origin-when-cross-origin — verhindert, dass der volle Seitenpfad in fremde Analytics abfließt. Das ist heute Browser-Default, explizit gesetzt aber verlässlicher.

Strict-Transport-Security: max-age=31536000; includeSubDomains — HSTS erzwingt HTTPS. Achtung: nur setzen, wenn die gesamte Website und alle Subdomains bereits über HTTPS laufen. Ein schnelles Zurückrollen gibt es nicht — Browser merken sich den Header über die volle max-age. Starten Sie mit max-age=300, prüfen Sie, dass nichts bricht, und erhöhen Sie dann.

CSP — am nützlichsten und am gefährlichsten

Die Content-Security-Policy legt fest, woher Skripte, Styles und Bilder geladen werden dürfen. Sie blockt die meisten XSS — und zerlegt die Seite, wenn die Policy auf Verdacht geschrieben wurde.

Der richtige Weg hat drei Schritte:

  1. Beobachtungsmodus einschalten: Content-Security-Policy-Report-Only mit Report-Endpunkt. Es wird nichts blockiert, aber Sie sehen, was blockiert würde.
  2. Zwei Wochen Reports sammeln und alles Legitime in die Policy aufnehmen — Widgets, Schriften, Analytics.
  3. Auf den scharfen Header umschalten.

Eine minimale sinnvolle Policy für eine Site ohne Inline-Skripte:

Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' data:; frame-ancestors 'none'; base-uri 'self'

Die Direktive frame-ancestors 'none' ersetzt das veraltete X-Frame-Options und schließt Clickjacking.

Was nicht mehr gebraucht wird

X-XSS-Protection — veraltet, moderne Browser ignorieren den Header, in älteren war er selbst eine Schwachstelle. Feature-Policy heißt inzwischen Permissions-Policy.

Wie man prüft

Header werden auf mehreren Ebenen gesetzt — CDN, Reverse Proxy, Anwendung — und gehen bei Infrastrukturänderungen leicht verloren oder doppeln sich. Prüfen Sie nicht die Konfiguration, sondern die tatsächliche Antwort auf mehreren URL-Typen: Startseite, eine Route aus dem SPA-Routing, eine statische Datei, ein API-Endpunkt. Die Unterschiede dazwischen sind der häufigste Auditfund.

Und achten Sie auf Regressionen: Ein Header, der beim Umzug auf ein neues CDN versehentlich wegfällt, meldet sich nicht — bis es zu spät ist.

Ebenfalls lesenswert

Prüfen Sie, was davon auf Ihrer Website steckt

Der kostenlose Scan zeigt kaputte Links, JS-Fehler und Performance-Probleme in einer Minute.