X-XSS-Protection was een beveiligingsheader die al bestaat sinds versie 4 van Google Chrome. Het is ontworpen om een tool in te schakelen die de inhoud van de website controleerde op gereflecteerde cross-site scripting. Alle grote browsers hebben nu de ondersteuning voor de header stopgezet omdat deze beveiligingsfouten introduceerde. Het wordt ten zeerste aanbevolen om de header helemaal niet in te stellen en in plaats daarvan een sterk beleid voor inhoudsbeveiliging te configureren.
Tip: Cross-Site Scripting wordt over het algemeen afgekort tot het acroniem “XSS”.
Weerspiegelde cross-site scripting is een klasse van XSS-kwetsbaarheid waarbij de exploit rechtstreeks in de URL is gecodeerd en alleen de gebruiker treft die de URL bezoekt. Reflected XSS is een risico wanneer de webpagina gegevens van de URL weergeeft. Als een webwinkel u bijvoorbeeld toestaat om naar producten te zoeken, heeft deze mogelijk een URL die er zo uitziet als "website.com/search?term=gift" en bevat het woord "gift" op de pagina. Het probleem begint als iemand JavaScript in de URL plaatst, als het niet goed is opgeschoond, kan dit JavaScript worden uitgevoerd in plaats van op het scherm te worden afgedrukt zoals het zou moeten. Als een aanvaller een gebruiker zou kunnen misleiden om op een link te klikken met dit soort XSS-payload, kunnen ze mogelijk dingen doen zoals hun sessie overnemen.
X-XSS-Protection was bedoeld om dit soort aanvallen te detecteren en te voorkomen. Helaas zijn er in de loop van de tijd een aantal omleidingen en zelfs kwetsbaarheden gevonden in de manier waarop het systeem werkte. Deze kwetsbaarheden betekenden dat het implementeren van de X-XSS-Protection-header een kwetsbaarheid voor cross-site scripting zou introduceren op een anders veilige website.
Om zich hiertegen te beschermen, met dien verstande dat de koptekst van het inhoudsbeveiligingsbeleid, doorgaans afgekort tot "CSP", functionaliteit bevat om deze te vervangen, hebben browserontwikkelaars besloten de functie buiten gebruik te stellen. De meeste browsers, waaronder Chrome, Opera en Edge, hebben de ondersteuning verwijderd of, in het geval van Firefox, nooit geïmplementeerd. Het wordt aanbevolen dat websites de koptekst uitschakelen om die gebruikers te beschermen die nog steeds oudere browsers gebruiken terwijl de functie is ingeschakeld.
X-XSS-Protection kan worden vervangen door de instelling "unsafe-inline" in de CSP-header. Het inschakelen van deze instelling kan veel werk vergen, afhankelijk van de website, omdat dit betekent dat alle JavaScript in externe scripts moet staan en niet rechtstreeks in de HTML kan worden opgenomen.