Kurz erklärt
Security Headers sind HTTP-Response-Header, die dem Browser mitteilen, welche Sicherheitsfunktionen er aktivieren soll. Sie schützen vor XSS, Clickjacking, Man-in-the-Middle-Angriffen und anderen Web-Bedrohungen – ohne Code-Änderungen an der Website.
Content-Security-Policy (CSP)
Definiert, welche Ressourcen (Skripte, Styles, Bilder) geladen werden dürfen – wichtigster Schutz gegen XSS.
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-random'
Strict-Transport-Security (HSTS)
Erzwingt HTTPS-Verbindungen – auch wenn Nutzer http:// eingeben.
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
X-Content-Type-Options
Verhindert MIME-Type-Sniffing – Browser führt nur Dateien mit korrektem Content-Type aus.
X-Content-Type-Options: nosniff
X-Frame-Options
Legacy-Schutz gegen Clickjacking – wird von CSP frame-ancestors abgelöst.
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
Referrer-Policy
Kontrolliert, welche Referrer-Informationen bei Links weitergegeben werden – wichtig für Datenschutz.
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy
Begrenzt Browser-Features wie Geolocation, Kamera, Mikrofon – minimiert Angriffsfläche.
Permissions-Policy: geolocation=(), camera=(), microphone=()
Empfohlene Konfiguration
Minimale Basis-Konfiguration für alle Websites:
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-{random}'
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Referrer-Policy: strict-origin-when-cross-origin
Erweiterte Konfiguration mit Permissions-Policy:
Permissions-Policy: geolocation=(), camera=(), microphone=(), payment=()
Implementierung
Apache (.htaccess oder httpd.conf):
<IfModule mod_headers.c>
Header always set Content-Security-Policy "default-src 'self'"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
</IfModule>
nginx:
add_header Content-Security-Policy "default-src 'self'" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
Cloudflare Workers:
const headers = {
'Content-Security-Policy': "default-src 'self'",
'Strict-Transport-Security': 'max-age=63072000; includeSubDomains',
'X-Content-Type-Options': 'nosniff'
};
Testen & Monitoring
- SecurityHeaders.com: Kostenloser Scanner mit Bewertung (A+ bis F)
- Browser DevTools: Network-Tab → Response Headers prüfen
- Observatory von Mozilla: Umfassender Security-Audit
- CSP Evaluator von Google: Speziell für Content Security Policy
Nächste Schritte
- Security Headers in Webserver-Konfiguration oder Cloudflare einfügen
- Mit SecurityHeaders.com testen und schrittweise zu A+ optimieren
- CSP zunächst im Report-Only-Modus testen, dann enforcement aktivieren
- Regelmäßig prüfen, ob alle Header gesetzt sind (z.B. monatlicher Check)