XSS (cross-site scripting, česky zhruba skriptování napříč weby) je útok, při kterém se do Vaší stránky podaří vložit cizí JavaScript. Ten se pak spustí v prohlížeči každého, kdo stránku otevře – a protože běží pod Vaší doménou, prohlížeč mu důvěřuje stejně jako Vašemu vlastnímu kódu.

Představte si nástěnku v čekárně, kam si každý může připnout vzkaz. Obvykle tam visí normální oznámení. Kdyby ale bylo pravidlo, že vše na nástěnce se musí bez přemýšlení splnit, stačilo by připíchnout lísteček s pokynem odevzdat peněženku. Web se chová podobně: co dostane do stránky, to prohlížeč provede. Rozdíl mezi neškodným textem a příkazem musí udělat sám web.

Kudy se cizí kód dostane dovnitř:

  • Uložené XSS – útočník napíše skript do komentáře, recenze nebo profilu, web ho uloží do databáze a od té chvíle se spouští každému čtenáři. Nejnebezpečnější varianta.
  • Odražené XSS – kód je schovaný přímo v odkazu, tedy v adrese, kterou oběť dostane e-mailem. Web ho vypíše na stránku a on se provede. Postižený je jen ten, kdo na odkaz klikl.
  • Děravý doplněk – v praxi nejčastější zdroj. Chybu neuděláte Vy, ale autor pluginu nebo tématu, které máte roky neaktualizované.

Následky sahají od otravných po vážné. Skript může ukrást přihlašovací cookies a útočník se pak přihlásí jako Vy do administrace. Může návštěvníky přesměrovat na cizí stránku, vykreslit falešný přihlašovací formulář nebo tiše měnit čísla účtu ve fakturách. Vzhledem k tomu, že vše běží pod Vaší doménou, se prohlížeč ani antivirus obvykle neozve.

Obrana stojí na jednoduchém pravidle: cokoli přišlo od uživatele, se musí před vypsáním na stránku ošetřit, aby se ostré závorky zobrazily jako text a neinterpretovaly jako značky. Tomu se říká escapování a dobře napsaný redakční systém to dělá sám. Vaším úkolem je hlavně aktualizovat, mazat nepoužívané doplňky a nevkládat do stránek kód z pochybných zdrojů.

Část pokusů odchytí ještě před příchodem k webu aplikační firewall, ale berte to jako pojistku, ne jako řešení. Souvislosti shrnuje heslo zabezpečení webu.