Conținutul poate fi returnat imediat, stocat și servit ulterior sau introdus prin manipulare nesigură a documentului client-side. Execuția poate acționa cu origin-ul paginii și contextul de utilizator accesibil, afectând conținutul afișat, datele sau acțiunile.
Prevenirea depinde de păstrarea datelor nesigure în afara contextelor executabile. Aplicațiile trebuie să folosească comportament și sink-uri sigure ale framework-ului, să aplice codificare de ieșire specifică contextului și să sanitizeze conținutul când utilizatorilor li se permite intenționat să furnizeze markup limitat.
Puncte esențiale
Forme obișnuiteXSS-ul reflectat returnează intrarea nesigură într-un răspuns, XSS-ul stocat servește conținut salvat anterior, iar XSS-ul bazat pe Document Object Model apare din flux și execuție nesigură de date client-side.
Prevenire primarăPreferați templating și interfețe de browser care tratează valorile ca text, codificați ieșirea pentru contextul său exact, validați URL-uri periculoase, evitați execuția inutilă de cod dinamic și folosiți sanitizere menținute pentru markup-ul permis.
IzolareAplicați o Content Security Policy bine proiectată, protejați cookie-urile sensibile, minimizați datele de browser expuse și constrângeți scripturile terțe ca apărare în profunzime, nu ca substitut pentru tratarea sigură a datelor.
Limitare importantăValidarea intrărilor, un firewall pentru aplicații web sau Content Security Policy singură nu poate acoperi fiecare context de execuție sau cale client-side. Politica same-origin a unui browser nu previne codul pe care pagina de încredere însăși l-a introdus.