Header-Diagnose

Security-Header prüfen

HSTS, CSP, X-Frame-Options, Permissions-Policy und Co. — moderne Header schützen vor XSS, Clickjacking und Mixed-Content. Wir geben dir den Score.

Die wichtigsten Security-Headers

Strict-Transport-Security (HSTS)

Erzwingt, dass der Browser deine Seite ausschließlich über HTTPS lädt — auch wenn jemand http:// in die URL tippt. Ohne HSTS ist eine MitM-Attacke beim ersten Besuch theoretisch möglich. Empfohlen:

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Content-Security-Policy (CSP)

Eine der mächtigsten Schutzmaßnahmen gegen XSS. Definiert, welche Quellen Scripts, Styles, Fonts, Bilder, etc. laden dürfen. Strikte CSP verbietet 'unsafe-inline' und 'unsafe-eval' — was viele alte WordPress-Plugins kaputt macht. Lohnt sich trotzdem.

Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'

X-Content-Type-Options

Verhindert MIME-Sniffing — der Browser nimmt den deklarierten Content-Type ernst und versucht nicht, anhand des Inhalts zu raten. Wert: immer nosniff.

X-Frame-Options

Verhindert Clickjacking, indem deine Seite nicht in einem iframe geladen werden darf. DENY = gar nicht, SAMEORIGIN = nur deine eigene Domain. Modernere Alternative: frame-ancestors in der CSP.

Referrer-Policy

Steuert, welcher Referer beim Klick auf einen externen Link mitgesendet wird. strict-origin-when-cross-origin ist ein guter Default — bei externen Links wird nur die Domain übermittelt, kein voller Pfad mit Query-Strings.

Permissions-Policy

Deaktiviert moderne Browser-APIs, die du nicht brauchst (Mikrofon, Geolokation, Kamera, Vibration, …). Bonus: deaktiviert auch das berüchtigte FLoC-Tracking mit interest-cohort=().

Permissions-Policy: camera=(), microphone=(), geolocation=(), interest-cohort=()

Konfiguration in nginx

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

Konfiguration in Apache (.htaccess)

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "DENY"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>