Treść może być zwrócona natychmiast, zapisana i podana później lub wprowadzona przez niebezpieczną manipulację dokumentu po stronie klienta. Wykonanie może działać z pochodzeniem (origin) strony i dostępnym kontekstem użytkownika, wpływając na wyświetlaną treść, dane lub akcje.
Zapobieganie zależy od trzymania niezaufanych danych poza kontekstami wykonywalnymi. Aplikacje powinny używać bezpiecznych zachowań frameworków i sinków, stosować kodowanie wyjścia specyficzne dla kontekstu i oczyszczać treść, gdy użytkownicy mogą celowo dostarczać ograniczony znacznik.
Najważniejsze punkty
Typowe formyReflected XSS zwraca niebezpieczne wejście w odpowiedzi, stored XSS podaje wcześniej zapisane treści, a XSS oparty na Document Object Model powstaje z niebezpiecznego przepływu i wykonania danych po stronie klienta.
Główna prewencjaPreferuj szablonowanie i interfejsy przeglądarki traktujące wartości jako tekst, koduj wyjście dla dokładnego kontekstu, waliduj niebezpieczne URL-e, unikaj niepotrzebnego dynamicznego wykonania kodu i używaj utrzymywanych oczyszczaczy dla dozwolonego znacznika.
Ograniczanie skutkówStosuj dobrze zaprojektowaną Content Security Policy, chroń wrażliwe ciasteczka, minimalizuj eksponowane dane przeglądarki i ograniczaj skrypty stron trzecich jako obronę w głębi, a nie substytuty bezpiecznej obsługi danych.
Istotne ograniczenieWalidacja wejścia, zapora aplikacji webowych ani sama Content Security Policy nie może objąć każdego kontekstu wykonania ani ścieżki po stronie klienta. Polityka same-origin przeglądarki nie zapobiega kodowi, który sama zaufana strona wprowadziła.