X-XSS-Protection to nagłówek bezpieczeństwa, który istnieje od wersji 4 Google Chrome. Został zaprojektowany, aby umożliwić narzędziu sprawdzającemu zawartość strony internetowej pod kątem odzwierciedlenia cross-site scripting. Wszystkie główne przeglądarki wycofały teraz obsługę nagłówka, ponieważ wprowadziło to luki w zabezpieczeniach. Zdecydowanie zaleca się, aby w ogóle nie ustawiać nagłówka i zamiast tego skonfigurować silną politykę bezpieczeństwa treści.
Wskazówka: Cross-Site Scripting jest zwykle skracany do akronimu „XSS”.
Odzwierciedlenie skryptów cross-site to klasa luki XSS, w której exploit jest bezpośrednio zakodowany w adresie URL i wpływa tylko na użytkownika odwiedzającego adres URL. Odbity XSS to ryzyko, gdy strona internetowa wyświetla dane z adresu URL. Na przykład, jeśli sklep internetowy umożliwia wyszukiwanie produktów, może mieć adres URL podobny do „website.com/search? termin=prezent” i umieść na stronie słowo „prezent”. Problem zaczyna się, jeśli ktoś umieści JavaScript w adresie URL, jeśli nie jest odpowiednio oczyszczony, ten JavaScript może zostać wykonany, a nie wydrukowany na ekranie tak, jak powinien. Jeśli atakujący może nakłonić użytkownika do kliknięcia łącza z tego rodzaju ładunkiem XSS, może być w stanie zrobić takie rzeczy, jak przejęcie jego sesji.
X-XSS-Protection miał na celu wykrywanie i zapobieganie tego typu atakom. Niestety, z biegiem czasu w sposobie działania systemu wykryto szereg obejścia, a nawet luk w zabezpieczeniach. Te luki oznaczały, że implementacja nagłówka X-XSS-Protection wprowadziłaby lukę cross-site scripting w bezpiecznej witrynie internetowej.
Aby się przed tym zabezpieczyć, przy założeniu, że nagłówek Polityki bezpieczeństwa treści, ogólnie skrócone do „CSP”, zawiera funkcjonalność umożliwiającą jej zastąpienie, twórcy przeglądarek zdecydowali się na wycofanie funkcja. Większość przeglądarek, w tym Chrome, Opera i Edge, albo usunęła obsługę, albo w przypadku Firefoksa nigdy jej nie zaimplementowała. Zaleca się, aby strony internetowe wyłączały nagłówek, aby chronić użytkowników, którzy nadal używają starszych przeglądarek z włączoną tą funkcją.
X-XSS-Protection można zastąpić ustawieniem „unsafe-inline” w nagłówku CSP. Możliwość włączenia tego ustawienia może wymagać dużo pracy w zależności od witryny, ponieważ oznacza to, że cały JavaScript musi znajdować się w skryptach zewnętrznych i nie może być zawarty bezpośrednio w kodzie HTML.