Wozu Security-Header?
Mit ein paar Zeilen in der Webserver-Konfiguration sagst du dem Browser, wie streng er mit deiner Seite umgehen soll: nur über HTTPS laden, keine fremden Skripte ausführen, nicht in fremden Frames anzeigen. Das kostet nichts und schließt ganze Angriffsklassen aus.
Die sechs wichtigsten Header
- Strict-Transport-Security (HSTS): Der Browser ruft die Seite nur noch über HTTPS auf, auch wenn jemand http:// eintippt oder einen alten Link klickt.
- Content-Security-Policy (CSP): legt fest, woher Skripte, Styles und Bilder kommen dürfen. Der wirksamste Schutz gegen Cross-Site-Scripting, aber auch der aufwendigste. Teste sie zuerst als
Content-Security-Policy-Report-Only. - X-Frame-Options / frame-ancestors: verhindert, dass fremde Seiten deine Seite unsichtbar einbetten und Klicks unterschieben (Clickjacking).
- X-Content-Type-Options: nosniff: Der Browser hält sich an den angegebenen Dateityp und rät nicht selbst.
- Referrer-Policy: wie viel von der aktuellen Adresse an andere Seiten weitergegeben wird.
- Permissions-Policy: welche Browserfunktionen wie Kamera, Mikrofon oder Standort genutzt werden dürfen.
Wie kommt die Bewertung zustande?
Für jeden der sechs Header gibt es einen Punkt, wenn er gesetzt und nicht offensichtlich wirkungslos ist. Sechs Punkte ergeben A, fünf B und so weiter. A+ gibt es, wenn zusätzlich keine Warnungen offen sind und die CSP Skripte wirklich einschränkt. Ohne HTTPS oder mit ungültigem Zertifikat ist die Note F. Die Note ist eine Orientierung: Eine Seite ohne Anmeldung und ohne Formulare braucht weniger als ein Kundenportal.
Hinweise zur Umsetzung
Setz die Header dort, wo die Antwort entsteht. Steht ein Reverse-Proxy oder CDN davor, gehören sie oft dorthin. Bei nginx gilt: add_header in einem location-Block ersetzt alle Header aus dem server-Block, und ohne always fehlen sie bei Fehlerseiten. Bei HSTS mit includeSubDomains müssen alle Subdomains HTTPS können.
Das Zertifikat selbst prüfst du im SSL-Check, welche CAs ausstellen dürfen im CAA-Generator.
FAQ
Warum zeigt das Werkzeug andere Header als mein Browser?
Manche Server liefern je nach Browser, Sprache oder Anmeldung unterschiedliche Antworten. Geprüft wird ein anonymer Aufruf ohne Cookies. Header, die erst nach dem Login gesetzt werden, erscheinen hier nicht.
Brauche ich wirklich eine Content-Security-Policy?
Für eine statische Seite ohne Formulare ist das Risiko gering. Sobald Benutzer sich anmelden oder Daten eingeben, ist eine CSP der beste Schutz gegen eingeschleustes JavaScript. Fang mit Report-Only an und schalte sie scharf, wenn keine Verstöße mehr gemeldet werden.
Ist X-XSS-Protection nicht wichtig?
Nein, nicht mehr. Alle aktuellen Browser haben den XSS-Filter entfernt, und in alten Versionen konnte er sogar Lücken öffnen. Entfernen oder auf 0 setzen.
Wird meine Seite dabei belastet?
Nein. Es wird eine einzige Anfrage gestellt (plus je eine pro Weiterleitung und eine für http://), und der Inhalt wird nach dem Header abgebrochen.
Kann ich auch interne Seiten prüfen?
Nein, der Server von hollop.net fragt nur öffentliche Adressen ab. Für interne Seiten nutze den Befehl curl -sI aus dem Ergebnis im eigenen Netz.