Obsah může být vrácen okamžitě, uložen a podán později, nebo zaveden nebezpečnou manipulací dokumentu na straně klienta. Provádění může jednat s originem stránky a přístupným kontextem uživatele, čímž ovlivní zobrazený obsah, data či akce.
Prevence závisí na držení nedůvěryhodných dat mimo spustitelné kontexty. Aplikace by měly používat bezpečné chování frameworků a sinky, uplatňovat kontextově specifické kódování výstupu a sanitizovat obsah, když mohou uživatelé záměrně dodávat omezené markup.
Klíčové body
Běžné formyReflected XSS vrací nebezpečný vstup v odpovědi, stored XSS podává dříve uložený obsah a XSS založené na Document Object Modelu vzniká z nebezpečného toku dat a provádění na straně klienta.
Primární prevencePreferujte templating a rozhraní prohlížeče, která zacházejí s hodnotami jako s textem, kódujte výstup pro jeho přesný kontext, validujte nebezpečné URL, vyhýbejte se zbytečnému dynamickému provádění kódu a používejte udržované sanitizery pro povolené markup.
ZadrženíUplatňujte dobře navrženou Content Security Policy, chraňte citlivé cookies, minimalizujte exponovaná data prohlížeče a omezujte skripty třetích stran jako hloubkovou obranu, nikoli náhradu bezpečného zacházení s daty.
Důležité omezeníValidace vstupu, firewall webových aplikací či Content Security Policy samy nedokážou pokrýt každý kontext provádění či cestu na straně klienta. Politika stejného originu prohlížeče nezabraňuje kódu, který samotná důvěryhodná stránka zavedla.