X-XSS-Protection war ein Sicherheitsheader, den es seit Version 4 von Google Chrome gibt. Es wurde entwickelt, um ein Tool zu ermöglichen, das den Inhalt der Website auf reflektiertes Cross-Site-Scripting überprüft. Alle großen Browser haben jetzt die Unterstützung für den Header eingestellt, da er Sicherheitslücken einführte. Es wird dringend empfohlen, den Header überhaupt nicht festzulegen und stattdessen eine starke Inhaltssicherheitsrichtlinie zu konfigurieren.
Tipp: Cross-Site Scripting wird im Allgemeinen auf das Akronym „XSS“ abgekürzt.
Reflected Cross-Site-Scripting ist eine Klasse von XSS-Schwachstellen, bei denen der Exploit direkt in der URL kodiert ist und nur den Benutzer betrifft, der die URL besucht. Reflected XSS ist ein Risiko, wenn die Webseite Daten von der URL anzeigt. Wenn Sie beispielsweise in einem Webshop nach Produkten suchen können, kann er eine URL haben, die wie folgt aussieht: „website.com/search?term=gift“ und das Wort „Geschenk“ auf der Seite enthalten. Das Problem beginnt, wenn jemand JavaScript in die URL einfügt. Wenn sie nicht richtig bereinigt ist, könnte dieses JavaScript ausgeführt werden, anstatt wie es auf dem Bildschirm ausgegeben werden sollte. Wenn ein Angreifer einen Benutzer dazu verleiten könnte, mit dieser Art von XSS-Nutzlast auf einen Link zu klicken, kann er beispielsweise seine Sitzung übernehmen.
X-XSS-Protection sollte diese Art von Angriffen erkennen und verhindern. Leider wurden im Laufe der Zeit eine Reihe von Umgehungen und sogar Schwachstellen in der Funktionsweise des Systems gefunden. Diese Schwachstellen führten dazu, dass die Implementierung des X-XSS-Protection-Headers eine Cross-Site-Scripting-Schwachstelle in eine ansonsten sichere Website einführen würde.
Um sich davor zu schützen, haben Browser-Entwickler beschlossen, die Funktion zu deaktivieren, da der Header der Inhaltssicherheitsrichtlinie, der im Allgemeinen als "CSP" abgekürzt wird, Funktionen enthält, um ihn zu ersetzen. Die meisten Browser, einschließlich Chrome, Opera und Edge, haben die Unterstützung entweder entfernt oder im Fall von Firefox nie implementiert. Es wird empfohlen, dass Websites den Header deaktivieren, um Benutzer zu schützen, die noch ältere Browser mit aktivierter Funktion verwenden.
X-XSS-Protection kann durch die Einstellung „unsafe-inline“ im CSP-Header ersetzt werden. Das Aktivieren dieser Einstellung kann je nach Website viel Arbeit erfordern, da das gesamte JavaScript in externen Skripten enthalten sein muss und nicht direkt in den HTML-Code eingefügt werden kann.