X-XSS-Protection header
Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.
Warnung:
Auch wenn dieses Feature Benutzer älterer Webbrowser schützen kann, die CSP nicht unterstützen, kann X-XSS-Protection
in einigen Fällen XSS-Schwachstellen in ansonsten sicheren Websites schaffen.
Weitere Informationen finden Sie im Abschnitt Sicherheitsüberlegungen unten.
Der HTTP X-XSS-Protection
Response-Header war ein Feature in Internet Explorer, Chrome und Safari, der Seiten daran hinderte, sich zu laden, wenn reflektierte Cross-Site-Scripting (XSS)-Angriffe erkannt wurden.
Diese Schutzmechanismen sind in modernen Browsern weitgehend überflüssig, wenn Websites eine starke Content-Security-Policy
implementieren, die die Nutzung von Inline-JavaScript ('unsafe-inline'
) deaktiviert.
Es wird empfohlen, anstelle von XSS-Filterung die Content-Security-Policy
zu verwenden.
Header-Typ | Response-Header |
---|---|
Verbotener Request-Header | Nein |
Syntax
X-XSS-Protection: 0
X-XSS-Protection: 1
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=<reporting-uri>
Direktiven
0
-
Deaktiviert die XSS-Filterung.
1
-
Aktiviert die XSS-Filterung (meistens Standard in Browsern). Wenn ein Cross-Site-Scripting-Angriff erkannt wird, wird der Browser die Seite bereinigen (unsichere Teile entfernen).
1; mode=block
-
Aktiviert die XSS-Filterung. Anstatt die Seite zu bereinigen, wird der Browser das Rendering der Seite verhindern, wenn ein Angriff erkannt wird.
1; report=<reporting-URI>
(nur Chromium)-
Aktiviert die XSS-Filterung. Wenn ein Cross-Site-Scripting-Angriff erkannt wird, wird der Browser die Seite bereinigen und die Verletzung melden. Dies nutzt die Funktionalität der CSP
report-uri
-Richtlinie, um einen Bericht zu senden.
Sicherheitsüberlegungen
Durch XSS-Filterung verursachte Schwachstellen
Betrachten Sie den folgenden Ausschnitt von HTML-Code für eine Webseite:
<script>
var productionMode = true;
</script>
<!-- [...] -->
<script>
if (!window.productionMode) {
// Some vulnerable debug code
}
</script>
Dieser Code ist völlig sicher, wenn der Browser keine XSS-Filterung durchführt. Wenn der Browser dies jedoch tut und die Suchanfrage ?something=%3Cscript%3Evar%20productionMode%20%3D%20true%3B%3C%2Fscript%3E
ist, könnte der Browser die Skripte auf der Seite ausführen und <script>var productionMode = true;</script>
ignorieren (in der Annahme, dass der Server dies in der Antwort enthielt, weil es in der URI war), was dazu führt, dass window.productionMode
auf undefined
ausgewertet wird und der unsichere Debug-Code ausgeführt wird.
Das Setzen des X-XSS-Protection
Headers auf 0
oder 1; mode=block
verhindert Schwachstellen wie die oben beschriebene. Ersteres würde den Browser alle Skripte ausführen lassen und letzteres würde verhindern, dass die Seite überhaupt verarbeitet wird (obwohl dieser Ansatz anfällig für Seitenkanalangriffe sein kann, wenn die Website in einem <iframe>
eingebunden werden kann).
Beispiel
Seiten daran hindern, sich zu laden, wenn reflektierte XSS-Angriffe erkannt werden:
X-XSS-Protection: 1; mode=block
PHP
header("X-XSS-Protection: 1; mode=block");
Apache (.htaccess)
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</IfModule>
Nginx
add_header "X-XSS-Protection" "1; mode=block";
Spezifikationen
Teil keiner Spezifikationen oder Entwürfe.