XSS útoky a zabezpečení stránek

XSS nebo-li Cross Site Scripting je jeden ze způsobů jak lze vlastně „hacknout“ webové stránky. Na jakém principu to funguje a jak se proti případným útokům bránit?

Úvod

Dnešní webové stránky jsou čím dál více složitější. Nabízejí hodně dynamického obsahu pro lepší spokojenost uživatelů. Dynamický obsah vzrostl skrz použití webových aplikací, které mohou poskytovat rozdílný výstup uživatelům na základě jejich nastavení a potřeb. Statické stránky rozhodně nezaznamely takovou úspěšnost, ale v jistém smyslu určitě plní svojí úlohu a především se nemusejí obávat žádné hrozby útoků. Tento článek píši abych se pokusil o poskytnutí lepšího porozumění této vyskytující se hrozby a dal jistý návod na obranu.

Co je Cross Site Scripting?

Cross Site Scripting (také známo jako XSS) nastavá, když webová aplikace shromažďujě neošetřená data od uživatelů. Tyto data jsou většinou odesílána z formulářů nebo přes URL. Útočník obvykle script zakóduje pomocí HEXA znaků (případně jinou encoding metodou), takže se tato data stávají méně podezřelá. Uživatelé na odkazy předávající škodlivý obsah většinou kliknou z jiných webových stránek, instant messangerů nebo jednoduše z emailové zprávy.

Získání hesla

Poté co jsou data úspěšně odeslány, tak se pro daného uživatele na stránce, kterou považoval za bezpečnou, vytvoří pozměněný a často závadný obsah. Hodně populárních Guestbook a Forum aplikací dovolují uživatelům vložení HTML nebo Javascript kódu a jejich následného zpracování. Takže se třeba může stát, že se přihlásím jako „Honza“ a přečtu si příspěvek od „Petra“, který obsahuje již výše zmíněný závadný javascript kód. Poté je třeba jednou z možností, že „Petr“ získá moje cookies údaje a s tím samozřejmě i mé přistupové heslo. A to jsem nemusel ani na nic klikat, pouze jsem si přečetl příspěvek na fóru. Možností útoků je ale mnohem víc.

XSS jak se bránit

Pokud na svých stránkách zobrazujete výstupy předávané metodou GET či POST nebo je pouze ukládáte do databáze, tak jako naprosto nezbytné zabezpečení doporučuji v php použití funkce:

htmlspecialchars('výstup', ENT_QUOTES).

Tato funkce převede string:

<script src=""> na -> &lt;script src=""&gt;

V případě, že se web stane terčem promyšleného útoku, tak ho rozhodně pouze tato funkce neochraní, ale jestli vás toto téma bude zajímat, tak se třeba dočkáte pokračování :)

hibi | 04:10, 31.1.2008 | Internet | 5 komentářů

Komentáře k textu

jonik

to me teda urcite zajima, pokracovani by bodlo :D

15:01, 2.4.2008
Nextex

Asi se nedočkáme ničeho. Považuju tenhle článek za „výkřik do tmy“.

12:13, 4.11.2009
Petr

Kdyby bylo pokračování, určitě by u mne a jiných lidí mělo úspěch. ;-)

15:01, 4.2.2010
Corvus

pridavam se k ostatnim docela by me to zajimalo, pouzivam neco podobneho v praci a bodlo by vedet vice.

10:55, 13.5.2010
Patriot02

hodilo by se pokračování např. o sql injection … to jsem nějak podrobně na netu česky nenašel

22:43, 25.1.2013

Kliknutím vložíš: Vlož smajla :-) Vlož smajla :-( Vlož smajla ;-) Vlož smajla :-D Vlož smajla 8-O Vlož smajla 8-) Vlož smajla :-? Vlož smajla :-x Vlož smajla :-P Vlož smajla :-|

Rubriky

Hardware Software Společnost Internet Zábava

Tagy a Štítky

TOPlist