Co je Cross-site scripting
Cross-site scripting (XSS) je bezpečnostní zranitelnost, která umožňuje útočníkovi vložit škodlivý skript do webové stránky zobrazované jiným uživatelům. Nejčastěji jde o vložení škodlivého JavaScriptu, který se spustí v prohlížeči oběti. Útočník tak může například odcizit přihlašovací údaje nebo manipulovat s obsahem stránky.
Cross-site scripting patří mezi nejčastější bezpečnostní chyby webových aplikací a dlouhodobě se objevuje i v přehledu OWASP Top 10.
Jak Cross-site scripting funguje
Cross-site scripting využívá nedostatečné ošetření vstupních dat. Pokud aplikace nekontroluje nebo správně „nečistí“ uživatelský vstup, může se škodlivý kód stát součástí stránky. Typický scénář může vypadat takto:
- útočník vloží škodlivý skript do formuláře nebo URL
- aplikace tento vstup bez úprav zobrazí dalším uživatelům
- skript se automaticky spustí v jejich prohlížeči
Prohlížeč oběti přitom považuje skript za důvěryhodný, protože pochází z legitimní, ale napadené stránky.
Typy XSS útoků
XSS útoky se dělí na několik základních typů podle způsobu provedení. Nejčastější jsou:
- Stored XSS – škodlivý kód je uložen na serveru (např. v databázi) a zobrazován opakovaně
- Reflected XSS – škodlivý kód je součástí URL nebo požadavku a okamžitě vrácen uživateli
- DOM-based XSS – útok probíhá přímo v prohlížeči na úrovni manipulace s DOM
Stored XSS bývá považován za nejnebezpečnější, protože zasahuje více uživatelů dlouhodobě.
Co může XSS způsobit
Důsledky XSS útoku mohou být závažné. Například může dojít k:
- krádeži přihlašovacích údajů
- odcizení session cookie
- přesměrování uživatele na podvodný web
- úpravě obsahu stránky
- spouštění škodlivého kódu
XSS může vést i k převzetí uživatelského účtu.
Jak se proti Cross-site scriptingu bránit
Ochrana proti Cross-site scriptingu spočívá především v bezpečném vývoji aplikace. Základní opatření zahrnují:
- validaci a filtrování vstupních dat
- správné escapování výstupu
- použití Content Security Policy
- aktualizaci knihoven a frameworků
- použití Web Application Firewall
Prevence je výrazně jednodušší než řešení následků útoku.