Warum Security-Header wichtig sind
HTTP-Antwort-Header steuern, wie der Browser mit einer Seite umgeht. Einige davon sind Sicherheitsanweisungen: Sie erzwingen HTTPS, verbieten das Einbetten in fremde Seiten, begrenzen, welche Skripte laufen dürfen, und verhindern, dass der Browser Dateitypen errät. Fehlen sie, ist die Seite angreifbarer, als sie sein müsste, obwohl die Anwendung selbst fehlerfrei ist.
Die Header im Einzelnen
- Strict-Transport-Security (HSTS): Der Browser verbindet sich künftig nur noch über HTTPS. Empfohlen: max-age=63072000; includeSubDomains; preload.
- Content-Security-Policy (CSP): Legt fest, aus welchen Quellen Skripte, Stile und Bilder geladen werden dürfen. Der wirksamste Schutz gegen Cross-Site-Scripting, aber auch der aufwendigste.
- X-Content-Type-Options: nosniff verhindert, dass der Browser den Inhaltstyp errät.
- X-Frame-Options oder frame-ancestors in der CSP: Verhindert Clickjacking durch Einbetten in fremde Seiten.
- Referrer-Policy: Begrenzt, welche URL-Teile an andere Seiten weitergegeben werden. Empfohlen: strict-origin-when-cross-origin.
- Permissions-Policy: Schaltet Browser-Funktionen wie Kamera, Mikrofon oder Geolocation ab, die die Seite nicht braucht.
Informationen, die nicht nach außen gehören
Header wie Server: nginx/1.18.0 oder X-Powered-By: PHP/8.1.2 verraten Versionen, die Angreifer mit bekannten Schwachstellen abgleichen. Sie sind kein Sicherheitsproblem an sich, aber ein unnötiges Geschenk. In nginx: server_tokens off; in PHP: expose_php = Off.
Beispiel für nginx
Ein solider Startpunkt für eine typische Website:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;Häufige Fragen
- Bricht eine CSP meine Website?
- Eine zu strenge CSP blockiert Skripte und Stile. Deshalb zuerst mit Content-Security-Policy-Report-Only testen, Verstöße sammeln und die Policy dann scharf schalten.
- Reicht HSTS mit kurzer max-age?
- Für die Einführung ja. Für die Preload-Liste der Browser braucht es mindestens ein Jahr und includeSubDomains.
- Werden die Header von Cloudflare gesetzt?
- Cloudflare kann sie ergänzen, ersetzt aber nicht die Konfiguration am Ursprung. Der Checker zeigt, was tatsächlich beim Besucher ankommt.