HTTP Security Headers: Welche Ihre Website wirklich braucht
Security Headers sind die einfachste Sicherheitsmaßnahme im Web — und die am häufigsten vergessene. Ein paar Zeilen in der Webserver-Konfiguration schützen vor den häufigsten Angriffen. Trotzdem fehlen sie bei der Mehrheit aller Websites. In unseren Audits sehen wir: Selbst Websites mit perfektem SSL-Zertifikat lassen die Tür über fehlende Header weit offen.
Dieser Ratgeber erklärt, welche Security Headers es gibt, welche davon Pflicht sind, und wie Sie sie einrichten — unabhängig davon, ob Sie Apache, Nginx oder ein Managed Hosting nutzen.
Hinweis: Die folgenden Ausführungen basieren auf unserer technischen Analyse und stellen keine Rechtsberatung dar. Für die rechtliche Bewertung konsultieren Sie bitte Ihren Datenschutzbeauftragten.
Häufige Fragen zu HTTP Security Headers
Welche Security Headers braucht meine Website?
Mindestens diese sechs: HSTS (erzwingt HTTPS), X-Frame-Options (verhindert Clickjacking), X-Content-Type-Options (verhindert MIME-Sniffing), Referrer-Policy (schützt URL-Informationen), Permissions-Policy (schränkt Browser-Features ein) und idealerweise eine CSP (schützt vor XSS). Alle bis auf CSP lassen sich in wenigen Minuten einrichten.
Können Security Headers meine Website kaputt machen?
Die meisten Header sind unkritisch: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy und Permissions-Policy können sofort aktiviert werden. Nur CSP erfordert sorgfältige Konfiguration — eine zu strenge Policy kann Skripte oder Stylesheets blockieren. Testen Sie CSP immer zuerst im Report-Only-Modus.
Wie prüfe ich meine Security Headers?
Am einfachsten mit einem exatics-Audit: Wir prüfen alle relevanten Header automatisch und geben konkrete Empfehlungen. Alternativ: Browser-Entwicklertools öffnen (F12), Network-Tab, eine Anfrage auswählen und die Response Headers prüfen.
Was sind Security Headers?
Security Headers sind Anweisungen, die Ihr Webserver bei jeder Antwort an den Browser mitsendet. Sie sagen dem Browser: „Lade nur Inhalte von diesen Quellen", „Erlaube kein Einbetten in Frames" oder „Verwende ausschließlich HTTPS". Der Browser folgt diesen Anweisungen — und blockiert alles, was nicht erlaubt ist.
Das Elegante daran: Sie müssen keinen Code ändern, keine Plugins installieren, keine Dateien anfassen. Die Header werden zentral auf dem Webserver konfiguriert und wirken für jede einzelne Seite. Einmal eingerichtet, arbeiten sie still im Hintergrund. Keine Wartung. Keine Updates. Einfach Schutz.
Die sechs Header, die jede Website haben sollte
1. Strict-Transport-Security (HSTS)
Was er tut: Zwingt den Browser, Ihre Website ausschließlich über HTTPS aufzurufen — auch wenn jemand http:// eingibt.
Warum das wichtig ist: Ohne HSTS ist der allererste Aufruf über HTTP verwundbar. Ein Angreifer im Netzwerk — etwa im Hotel-WLAN — kann die Verbindung abfangen und auf eine unverschlüsselte Seite umleiten. Das nennt sich SSL-Stripping, und es passiert häufiger als man denkt.
So setzen Sie ihn:
# Apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Wichtig: HSTS erst aktivieren, wenn HTTPS sicher funktioniert. Sonst sperren Sie sich selbst aus. Mit kurzer max-age (300 Sekunden) testen, dann auf ein Jahr erhöhen.
2. Content-Security-Policy (CSP)
Was er tut: Legt fest, von welchen Quellen der Browser Skripte, Stylesheets und andere Ressourcen laden darf.
Warum das wichtig ist: CSP ist der wirksamste Schutz gegen Cross-Site-Scripting (XSS) — die häufigste Angriffsmethode im Web. Ohne CSP kann ein eingeschleustes Skript beliebige externe Ressourcen nachladen: Keylogger, Crypto-Miner, Daten-Exfiltration. Mit CSP blockiert der Browser alles, was nicht auf der Whitelist steht.
So setzen Sie ihn:
# Einfache Basis-CSP
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'
Der Haken: CSP ist der mächtigste, aber auch der anspruchsvollste Header. Zu streng — und Ihre Website funktioniert nicht mehr. Zu locker ('unsafe-inline' 'unsafe-eval') — und der Schutz ist wertlos. Beginnen Sie mit Content-Security-Policy-Report-Only, um Verstöße zu protokollieren, ohne etwas zu blockieren.
3. X-Frame-Options
Was er tut: Verhindert, dass Ihre Website in einem iFrame einer fremden Seite eingebettet wird.
Warum das wichtig ist: Ohne X-Frame-Options können Angreifer Ihre Website unsichtbar über ihre eigene Seite legen. Der Besucher klickt auf einen Button der Angreifer-Seite — löst aber tatsächlich eine Aktion auf Ihrer Website aus. Das nennt sich Clickjacking. Besonders gefährlich bei Formularen, Login-Seiten und Bezahlvorgängen.
So setzen Sie ihn:
# Apache
Header always set X-Frame-Options "SAMEORIGIN"
# Nginx
add_header X-Frame-Options "SAMEORIGIN" always;
4. X-Content-Type-Options
Was er tut: Verhindert, dass der Browser den Dateityp errät (MIME-Sniffing).
Warum das wichtig ist: Ohne diesen Header kann ein Browser eine als Bild deklarierte Datei als JavaScript interpretieren und ausführen. Mit X-Content-Type-Options: nosniff respektiert der Browser den Content-Type und blockiert alles, was nicht passt. Einfach. Wirkungsvoll. Null Nebenwirkungen.
So setzen Sie ihn:
# Apache
Header always set X-Content-Type-Options "nosniff"
# Nginx
add_header X-Content-Type-Options "nosniff" always;
5. Referrer-Policy
Was er tut: Kontrolliert, welche URL-Informationen bei ausgehenden Links übertragen werden.
Warum das wichtig ist: Ohne Referrer-Policy überträgt der Browser die vollständige URL der aktuellen Seite an die Zielseite. Das klingt harmlos — bis Ihre URLs Suchbegriffe, Benutzer-IDs oder Session-Tokens enthalten. Dann landen personenbezogene Daten bei jedem externen Link-Klick auf fremden Servern.
So setzen Sie ihn:
# Apache
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Nginx
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
6. Permissions-Policy
Was er tut: Schränkt ein, welche Browser-Features (Kamera, Mikrofon, Geolokation) die Website und eingebettete iFrames nutzen dürfen.
Warum das wichtig ist: Ohne Permissions-Policy können eingebettete Drittanbieter-Inhalte — etwa Werbe-iFrames — theoretisch auf Kamera und Mikrofon zugreifen. Die Policy stellt sicher, dass nur Sie entscheiden, welche Features erlaubt sind.
So setzen Sie ihn:
# Apache
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
# Nginx
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
Zwei Header, die Sie entfernen sollten
Server-Versionsinformation
Viele Webserver verraten ihre exakte Version im Server-Header: Apache/2.4.57 oder nginx/1.24.0. Für Angreifer ist das ein Geschenk — sie können gezielt nach bekannten Schwachstellen dieser Version suchen.
# Apache — Versionsinformation unterdrücken
ServerTokens Prod
# Nginx — Versionsinformation unterdrücken
server_tokens off;
X-Powered-By
Der X-Powered-By Header verrät die eingesetzte Technologie: PHP/8.1.27. Das ist, als würden Sie einem Einbrecher den Hausschlüssel-Typ auf die Fußmatte schreiben.
# PHP (php.ini)
expose_php = Off
# Apache — Header komplett entfernen
Header always unset X-Powered-By
# Nginx
fastcgi_hide_header X-Powered-By;
Alles auf einmal: Die komplette Konfiguration
Kopieren Sie diese Konfiguration in Ihren Webserver — und Ihre Website ist sofort besser geschützt als 90 % aller Websites im Netz.
Apache (.htaccess oder httpd.conf)
# Security Headers
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "SAMEORIGIN"
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=()"
Header always unset X-Powered-By
ServerTokens Prod
Nginx (server-Block)
# Security Headers
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" 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;
fastcgi_hide_header X-Powered-By;
server_tokens off;
Wichtig: CSP fehlt bewusst in dieser Vorlage. CSP muss individuell auf Ihre Website abgestimmt werden — eine falsche Policy kann Ihre Website unbenutzbar machen. Beginnen Sie mit Content-Security-Policy-Report-Only und passen Sie die Regeln schrittweise an.
WordPress und andere CMS
Bei Managed Hosting haben Sie oft keinen Zugriff auf die Webserver-Konfiguration. In diesem Fall helfen Plugins — oder ein freundlicher Support-Anruf.
WordPress-Plugins
- Headers Security Advanced & HSTS WP — Umfangreiches Plugin für alle Security Headers
- HTTP Headers — Einfache Konfiguration der wichtigsten Header
Bei WordPress über .htaccess können Sie die Header auch ohne Plugin setzen — die Apache-Konfiguration oben funktioniert direkt.
Hosting-Anbieter
Viele Hosting-Anbieter setzen einige Security Headers bereits standardmäßig. Fragen Sie nach — oder prüfen Sie es einfach mit einem exatics-Audit.
X-XSS-Protection: Ein Sonderfall
Den X-XSS-Protection Header sieht man noch auf vielen Websites. Er sollte entfernt werden.
X-XSS-Protection war ein Browser-eigener XSS-Filter, der 2019 von Chrome entfernt wurde. Der Grund: In bestimmten Szenarien konnte der Filter selbst zum Angriffsvektor werden. CSP ist der moderne Ersatz. Wenn Sie noch X-XSS-Protection: 1; mode=block setzen: Entfernen Sie ihn. Er schadet mehr als er nützt.
DSGVO und Security Headers
Security Headers sind nicht nur Best Practice — sie haben auch rechtliche Relevanz.
DSGVO Art. 32 verlangt „geeignete technische und organisatorische Maßnahmen" zum Schutz personenbezogener Daten. Security Headers sind genau das: technische Maßnahmen, die den Schutz erhöhen, ohne Aufwand oder Kosten. Ein Audit, das fehlende Security Headers dokumentiert, ist ein Indiz dafür, dass nicht alle zumutbaren Schutzmaßnahmen ergriffen wurden.
Besonders relevant:
- HSTS — Schutz der Transportverschlüsselung (Art. 32 Abs. 1 lit. a)
- CSP — Schutz der Integrität (Art. 32 Abs. 1 lit. b)
- Referrer-Policy — Datenminimierung (Art. 5 Abs. 1 lit. c)
- Permissions-Policy — Zugriffskontrolle auf Endgeräte (§ 25 TDDDG)
Was prüft exatics?
Unser Audit analysiert automatisch alle relevanten Security Headers und berechnet einen Sicherheits-Score. Für jeden fehlenden oder falsch konfigurierten Header erhalten Sie eine konkrete Empfehlung — verständlich formuliert für Website-Betreiber, mit technischen Details für Entwickler.
Im Detail prüfen wir:
- Ist HTTPS aktiv und das Zertifikat gültig?
- Welche TLS-Version wird verwendet?
- Ist HSTS mit ausreichender max-age gesetzt?
- Wird HTTP auf HTTPS weitergeleitet (301)?
- Ist eine CSP vorhanden — und wie restriktiv?
- Sind Clickjacking-Schutz, MIME-Sniffing-Schutz, Referrer-Policy und Permissions-Policy aktiv?
- Werden Versionsinformationen über Server- oder X-Powered-By-Header preisgegeben?
Weiterführende Artikel
Vertiefende Fragen zu HTTP Security Headers
Muss ich Security Headers setzen, um DSGVO-konform zu sein?
Die DSGVO schreibt keine konkreten Header vor, verlangt aber geeignete technische Schutzmaßnahmen (Art. 32). Security Headers sind einfache, kostenlose und wirkungsvolle Maßnahmen. Fehlende Header können bei einem Datenschutzvorfall als Indiz gewertet werden, dass nicht alle zumutbaren Maßnahmen ergriffen wurden.
Funktionieren Security Headers auch bei Managed Hosting?
Das hängt vom Anbieter ab. Viele Managed-Hosting-Provider setzen bereits einige Header standardmäßig. Für zusätzliche Header gibt es bei WordPress Plugins wie Headers Security Advanced. Alternativ fragen Sie Ihren Hosting-Support — die Einrichtung ist für den Anbieter ein Einzeiler in der Serverkonfiguration.