Logo David Burdelak
Słownik · Cyberbezpieczeństwo

Co to jest XSS?

Ostatnia aktualizacja:

XSS (Cross-Site Scripting) to atak, w którym napastnik wstrzykuje złośliwy skrypt JavaScript do strony, a przeglądarka ofiary wykonuje go tak, jakby pochodził z zaufanej witryny.

Rodzaje XSS

  • Stored – skrypt zapisany w bazie (np. w komentarzu) i serwowany wszystkim,
  • Reflected – skrypt zawarty w linku, odbity w odpowiedzi,
  • DOM-based – podatność w kodzie JavaScript po stronie przeglądarki.

Jak się chronić?

  1. Escapuj dane wyjściowe zgodnie z kontekstem (HTML, atrybut, JavaScript), np. htmlspecialchars() w PHP.
  2. Waliduj dane wejściowe.
  3. Wdróż nagłówek Content-Security-Policy.
  4. Ustaw flagę HttpOnly dla ciasteczek sesyjnych.

Przykład i ochrona w kodzie

XSS polega na wstrzyknięciu do strony skryptu, który wykona się w przeglądarce ofiary, np. przez nieoczyszczony komentarz lub parametr w adresie. Atakujący może wtedy przejąć sesję, podmienić treść lub wykraść dane. Wyróżnia się XSS odbity, zapisany na stałe w bazie i oparty na DOM. Podstawą obrony jest escapowanie danych przy wyświetlaniu, np. funkcją htmlspecialchars w PHP, zgodnie z kontekstem (HTML, atrybut, JavaScript), oraz polityka CSP. Ciasteczka z atrybutem HttpOnly utrudniają kradzież sesji.

Nie ufaj danym pochodzącym od użytkownika, także z nagłówków i plików. Nowoczesne frameworki zwykle escapują dane domyślnie, ale ominięcie tego mechanizmu, np. przez wstawianie surowego HTML, otwiera lukę.

Co może zrobić atakujący dzięki XSS?

Może przejąć sesję użytkownika, wykonywać działania w jego imieniu, podmieniać treść strony lub wyłudzać dane. Dlatego XSS zaliczany jest do poważnych podatności.

Podobnie jak przy zabezpieczaniu aplikacji przed SQL Injection, podstawą ochrony jest traktowanie wszystkich danych od użytkownika jako niezaufanych.

Zobacz w praktyce

Powiązane pojęcia

Wszystkie hasła z kategorii Cyberbezpieczeństwo