Teil 7 der Serie „EU Web Security: In 10 Schritten zum besseren Rating"
X-Content-Type-Options
Das Problem
Browser versuchen manchmal zu "erraten", welchen Typ eine Datei hat — unabhängig vom Content-Type-Header. Ein Bild das eigentlich JavaScript enthält? Der Browser führt es aus. Das nennt sich MIME-Sniffing, und es ist ein Einfallstor für Injection-Angriffe.
Die Lösung
X-Content-Type-Options: nosniff
Ein Header, ein Wert. Der Browser akzeptiert nur Dateien mit dem deklarierten MIME-Type.
Adoption: 27,7%. Fast drei Viertel der EU-Websites sind anfällig für MIME-Confusion-Angriffe.
Einrichten
Nginx:
add_header X-Content-Type-Options "nosniff" always;
Apache:
Header always set X-Content-Type-Options "nosniff"
Es gibt nur einen gültigen Wert (nosniff), keine Konfiguration, keine Nebenwirkungen. Kein Grund, es nicht zu setzen.
Referrer-Policy
Das Problem
Wenn ein Nutzer von Ihrer Website auf einen externen Link klickt, sendet der Browser standardmäßig die vollständige URL der Herkunftsseite als Referrer-Header. Das kann sensible Informationen leaken:
https://ihre-domain.de/dashboard?user=12345&token=abchttps://ihre-domain.de/admin/reports/confidential-audithttps://ihre-domain.de/search?q=krankheit+symptome
Der Betreiber der Zielseite sieht die komplette URL — inklusive Query-Parameter, Pfade, Session-Tokens.
Die Lösung
Referrer-Policy: strict-origin-when-cross-origin
Damit sendet der Browser:
- Beim Wechsel auf eine andere Domain: nur die Origin (https://ihre-domain.de), keine Pfade
- Innerhalb der eigenen Domain: die vollständige URL (für Analytics nützlich)
- Bei Downgrade HTTPS→HTTP: nichts
Adoption: 13,1%.
Einrichten
Nginx:
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
Apache:
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Alternative Policies
| Policy | Verhalten | Empfehlung |
|---|---|---|
no-referrer |
Nie Referrer senden | Zu strikt (bricht Analytics) |
origin |
Immer nur Origin | Gut, aber verliert interne Pfade |
strict-origin-when-cross-origin |
Origin cross-domain, full intern | Empfohlen |
same-origin |
Full intern, nichts extern | Gut für sensible Anwendungen |
Beide zusammen: das Nginx-Snippet
# Security headers — copy-paste ready
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Vier Header, vier Zeilen. In der Nginx-Konfiguration oder einem Include-File. Zusammen mit den Teilen 1-3 dieser Serie decken sie die sechs wichtigsten Security-Header ab.
Prüfen Sie Ihre Headers
Nächste Woche in Teil 8: CAA Records — welche Zertifizierungsstelle darf Zertifikate für Ihre Domain ausstellen?