X-XSS-Protection to nagłówek zabezpieczeń, który istnieje od wersji 4 Google Chrome. Został zaprojektowany, aby umożliwić narzędziu sprawdzającemu zawartość witryny pod kątem odbitego cross-site scriptingu. 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 cross-site scripting to klasa luki XSS, w której exploit jest bezpośrednio zakodowany w adresie URL i wpływa tylko na użytkownika, który odwiedza 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?term=gift” i zawierać słowo „prezent” na stronie. Problem zaczyna się, jeśli ktoś umieści JavaScript w adresie URL, jeśli nie jest odpowiednio oczyszczony, ten JavaScript może być wykonywany, a nie wyświetlany 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.
Aby się przed tym zabezpieczyć, przy założeniu, że nagłówek polityki bezpieczeństwa treści, zwykle skracany do „CSP”, zawiera funkcję, która go zastępuje, twórcy przeglądarek postanowili wycofać tę funkcję. 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 witryny 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 kod JavaScript musi znajdować się w skryptach zewnętrznych i nie może być zawarty bezpośrednio w kodzie HTML.