Co je XSS (Cross-Site Scripting)?
Cross-Site Scripting, nebo XSS, je bezpečnostní chyba na webových stránkách, která umožňuje útočníkům přidávat škodlivé skripty na webové stránky. Většinou jsou tyto skripty napsány v JavaScriptu.
Pokud někdo navštíví stránku ovlivněnou XSS, jeho prohlížeč spustí skript útočníka. To může vést ke krádeži cookies, únosu relací nebo provádění akcí bez souhlasu uživatele.
XSS, stejně jako SQL Injection, je pravidelně uváděno v OWASP Top 10 jako jedna z nejběžnějších zranitelností webových aplikací.

Jak XSS funguje?
XSS často cílí na webové aplikace, které správně nekontrolují a nečistí uživatelský vstup.
Například, pokud pole pro komentáře umožňuje surové HTML nebo JavaScript bez jakéhokoliv filtrování, útočník by mohl přidat kód jako tento:
<script>alert('Hacked!');</script>
Když oběti zobrazí stránku, škodlivý kód se spustí v jejich prohlížeči.
Proč je XSS důležité v kybernetické bezpečnosti
XSS může vést k většímu narušení:
- Převzetí účtu (krádež cookies relace k vydávání se za uživatele)
- Krádež dat (zachycení vstupů formulářů jako hesla nebo kreditní karty)
- Phishingové útoky (vkládání falešných přihlašovacích formulářů)
- Doručování malwaru (přesměrování uživatelů na škodlivé webové stránky)
Typy XSS
- DOM-Based XSS
- Útok probíhá zcela v prohlížeči manipulací s Document Object Model (DOM) bez zapojení serveru.
- Uložené XSS
- Škodlivý skript je trvale uložen na serveru, například v databázi, na stránce profilu.
- Odražené XSS
- Skript je odražen z webového serveru (např. v URL nebo chybové zprávě), skript bude spuštěn, když oběť klikne na odkaz vytvořený útočníky.
Jak zabránit XSS
- Sanitace vstupu a kódování výstupu: vždy čistit vstupní data uživatele před jejich zpracováním, transformovat vstup uživatele do bezpečného formátu
- Použití Content Security Policy (CSP): omezuje, jaké skripty mohou být spuštěny v prohlížeči.
- Vyhnout se eval() a inline JavaScriptu: ke snížení rizika injekce.
- Bezpečnostní testování (DAST/IAST): provádět bezpečnostní testování k včasné detekci zranitelností
Příklad z reálného světa - Samy worm (MySpace, 2005)
Co se stalo: Samy Kamkar publikoval profil na MySpace, který obsahoval uložený XSS payload. Když ostatní uživatelé zobrazili profil, payload se spustil v jejich prohlížečích, (a) přidal Samyho jako přítele, (b) připojil frázi „Samy je můj hrdina“ k jejich profilům a (c) replikoval se na stránky profilů těchto uživatelů.
Dopad: Červ se sám rozšířil k ~1 milionu uživatelů během ~20 hodin, což dočasně přinutilo MySpace offline.
Proč to fungovalo: MySpace umožňoval neuniknuté HTML/atributy v polích profilu, což umožnilo spuštění uloženého skriptu v prohlížečích návštěvníků.
Lekce / oprava: Správné kódování výstupu, sanitace vstupu, odstranění HTML v profilech a rychlé záplatování. Samy později čelil právním důsledkům a MySpace nasadil filtry.
Související termíny
- SQL Injection
- DAST (Dynamické testování bezpečnosti aplikací)
- OWASP Top 10
- CSRF (Cross-Site Request Forgery)