Mit dem Einschleusen von JavaScript Code, auch Cross-Site Scripting (XSS) genannt, entstehen der Wirtschaft jährlich enorme Schäden und stellt somit eine enorme Gefahr dar. Wird der Website Schadcode eingeschleust können komplette Datensätze der Benutzerdaten und / oder sogar Phishing-Seiten untergemogelt werden. Du als Website-Betreiber kannst aber mit dem XSS-Protection Header eine Schutzmaßnahme gegen XSS-Angriffe aktivieren.
Schutz vor Cross-Site-Scripting Angriffen
X-Header Einträge sind Anweisungen für den Webbrowser um gewisse Funktionen einzuschränken. Durch die Einschränkungen im Broweser wird natürlich auch die Websitesicherheit erhöht. Der X-XSS-Protection Header soll helfen, Cross-Site Scripting (XSS)-Angriffe abzuwehren. Bei einem XSS-Angriff wird JavaScript-Code über eine ungesicherte Eingabe auf einer Website eingeschleust.
Mit der Option 0 wird der Filter deaktiviert. Die Option 1 hingegen aktiviert die XSS-Filterung. Wenn ein Cross-Site-Scripting-Angriff erkannt wird, wird der Browser die unsicheren Teile entfernen. Wird die Option mode=block gesetzt, wird bei einem erkannten Angriff der gesamte Seitenaufruf geblockt, anstatt nur den Schadcode zu entfernen.
# X-XSS-Protection: 0|1; mode=block
Der Google Chrome Browser kennt noch als weitere Option den report. Dabei werden erkannte Angriffe an die angegebene URL übertragen.
# X-XSS-Protection: 1; mode=block; report=https://example.com/report.php
X-XSS Protection Header einbinden
Bei einem Apache-Webserver kann der Eintrag einfach in die .htaccess-Datei erfolgen:
# <IfModule mod_headers.c>
# Header always append X-XSS-Protection "1; mode=block"
# </IfModule>
Für den Nginx kann der X-XSS-Protection Eintrag wie folgt erfolgen:
# add_header "X-XSS-Protection" "1; mode=block";
Alternativ kann man den Header-Eintrag auch direkt in PHP setzen:
# header ("X-XSS-Protection: 1; mode=block");
Der Header kann hierbei einfach hinzugefügt werden und erhöht die Sicherheit deiner Website. Allerdings ist diese Schutzmaßnahme in modernen Browsern weitgehend unnötig, da es mit der Content-Security-Policy bereits eine bessere Methode gibt, die die Verwendung von Inline-JavaScript („unsafe-inline“) deaktiviert. Der XSS-Protection Header-Eintrag wird deshalb auch nicht von Firefox unterstützt. Dennoch kann der Header-Eintrag Schutz für Benutzer älterer Webbrowser bieten, die noch keine Content-Security-Policy Header unterstützen.