X-XSS-Protection ist ein historischer HTTP-Response-Header, mit dem Internet Explorer, Chrome und Safari ihren eingebauten Filter gegen reflektiertes Cross-Site-Scripting (XSS) steuerten. Der Header ist veraltet: Alle modernen Browser ignorieren ihn oder haben die Unterstützung entfernt.
Die Werte
0— Filter ausgeschaltet.1— Filter eingeschaltet; er entfernt verdächtige Teile aus der Seite.1; mode=block— statt der Bereinigung wird die gesamte Seite blockiert.1; report=<uri>— nur Internet Explorer; sendet einen Bericht an eine URL.
Warum der Header verschwand
Die eingebauten XSS-Filter waren unzuverlässig: Sie erkannten Angriffe nicht zuverlässig, blockierten im Umkehrschluss aber regelmäßig legitime Seiten (False Positives) und konnten selbst Umgehungswege öffnen. Chrome entfernte den Filter mit Version 78, Firefox unterstützte ihn nie, und auch Safari zog sich zurück. Heute gilt: Der Header ist nutzlos, eine Website gewinnt durch ihn keine Sicherheit.
Modernes XSS-Schutzkonzept
An die Stelle der X-XSS-Protection tritt eine Kombination aus mehreren Mechanismen:
- eine strikte Content-Security-Policy mit
script-src-Einschränkungen, - X-Content-Type-Options: nosniff, damit der Browser Dateitypen nicht rät,
- korrektes Escaping aller Ausgaben im Anwendungscode.
Moderne Sicherheitsheader wie Cross-Origin-Embedder-Policy (COEP) haben die Aufgabe des alten Filters übernommen: Sie verhindern, dass eingebettete fremde Inhalte Schaden anrichten können. Wer den Header dennoch für alte Browser setzen will, verwendet am ehesten 0, um den unberechenbaren Filter ausdrücklich abzuschalten.
Verwandte Grundlagen: Cross-Site-Scripting, Content-Security-Policy, X-Content-Type-Options, Cross-Origin-Embedder-Policy, Browser.