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, die CSP nicht unterstützen, schützen kann, 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 von Internet Explorer, Chrome und Safari, das das Laden von Seiten stoppte, wenn reflektierte Cross-Site-Scripting- (XSS) Angriffe erkannt wurden. Diese Schutzmaßnahmen sind in modernen Browsern größtenteils unnötig, wenn Websites eine starke Content-Security-Policy implementieren, die die Verwendung von Inline-JavaScript ('unsafe-inline') deaktiviert.

Es wird empfohlen, anstelle der XSS-Filterung Content-Security-Policy zu verwenden.

Header-Typ Response-Header
Verbotener Request-Header Nein

Syntax

http
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 (in der Regel Standard in Browsern). Wenn ein Cross-Site-Scripting-Angriff erkannt wird, wird der Browser die Seite bereinigen (die unsicheren Teile entfernen).

1; mode=block

Aktiviert die XSS-Filterung. Anstatt die Seite zu bereinigen, wird der Browser das Rendern 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 den Verstoß melden. Dies nutzt die Funktionalität der CSP-report-uri-Direktive, um einen Bericht zu senden.

Sicherheitsüberlegungen

Schwachstellen verursacht durch XSS-Filterung

Betrachten Sie den folgenden Auszug von HTML-Code für eine Webseite:

html
<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 er es 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 (denkend, dass der Server es in die Antwort eingefügt hat, weil es in der URI war), was dazu führt, dass window.productionMode auf undefined ausgewertet wird und unsicherer Debug-Code ausgeführt wird.

Das Setzen des X-XSS-Protection-Headers auf entweder 0 oder 1; mode=block verhindert Schwachstellen wie die oben beschriebene. Ersteres würde dazu führen, dass der Browser alle Skripte ausführt und Letzteres würde verhindern, dass die Seite überhaupt verarbeitet wird (obwohl dieser Ansatz anfällig für Seitenkanalangriffe sein könnte, wenn die Website in einem <iframe> eingebettet werden kann).

Beispiel

Blockieren Sie das Laden von Seiten, wenn reflektierte XSS-Angriffe erkannt werden:

http
X-XSS-Protection: 1; mode=block

PHP

php
header("X-XSS-Protection: 1; mode=block");

Apache (.htaccess)

apacheconf
<IfModule mod_headers.c>
  Header set X-XSS-Protection "1; mode=block"
</IfModule>

Nginx

nginx
add_header "X-XSS-Protection" "1; mode=block";

Spezifikationen

Nicht Teil von Spezifikationen oder Entwürfen.

Browser-Kompatibilität

Siehe auch