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.