Webové formuláře jsou nepostradatelnou součástí internetových stránek, ale také zadní vrátka pro zlé duchy s nekalými úmysly. Poradíme vám jak si toto bezpečnostní riziko ohlídat.
Nejprve si ujasněme, co je to vlastně webový formulář. Obecně jde o jakoukoliv část internetových stránek, pomocí které lze vložit a odeslat údaje. Nejčastěji se jedná o textové kolonky, políčka pro výběr z připravených možností nebo boxy k nahrávání souborů. Formulář může mít bezpočet různých funkcí, ale pro představu si jmenujme alespoň některé. Typickým příkladem je přihlašovací stránka do zabezpečené sekce webu, na níž uživatel vyplňuje jméno a heslo. Na stejném principu je založena registrace nového uživatele, přidávání zboží do košíku, zasílání poptávky či vkládání komentáře do diskuze.
Práce s formulářem zpravidla probíhá ve třech krocích. Nejdříve se vyplňují požadované údaje, na které jsou kladeny nejrůznější nároky. Některé položky jsou povinné, jiné volitelné, do vybraných polí lze vložit pouze celá čísla a jinde zase musí být emailová adresa ve správném formátu. Druhý krok spočívá v odeslání údajů na server. Při kliknutí na potvrzovací tlačítko však dochází k částečné kontrole zadaných údajů a pokud nesplňují požadavky kladené formulářem, tak se proces zastaví a webový prohlížeč nám sdělí v čem je problém.
Tyto chybové hlášky jistě dobře znáte. Objevují se u formulářů, když se něco nepodaří správně vyplnit.
Pokud žádný nesoulad nevznikne, následuje třetí krok v podobě zpětné vazby. Tou může být už jen to, že formulář zmizí a uživatel se ocitne na následující stránce. Jindy se nad kolonkami objeví informace o úspěšném odeslání či je proměněn zobrazovaný obsah. Stejně tak se však mohou objevit potíže s daty rozpoznané serverem, které nedokázala identifikovat předchozí kontrola. Například při registraci nového uživatele se zjistí, že již existuje účet uvádějící stejnou emailovou adresu.
Při tvorbě formuláře je třeba předvídat nepředvídané. Je nutné, aby vývojář ošetřil všechny situace, které mohou nastat, jinak nechává otevřená zadní vrátka pro duchy s nekalými úmysly. Ti se mohou snažit získat (změnit, smazat) údaje z databáze jako historii objednávek, informace o uživatelích včetně emailových adres a dalších osobních dat. Stejně tak lze ukrást identitu ostatním uživatelům, například administrátorovi webu, a tím získat kompletní přístup do zabezpečené části.
Nyní je dobré vysvětlit, co je to skript. Jedná se o program v textové podobě, tedy kus kódu vykonávající určenou funkci, který může být spuštěn ve webovém prohlížeči nebo přímo na serveru. Například skrze formuláře pro nahrávání obrázkových příloh bývá možné skript vložit a tím jej umístit na server. Útočníkovi pak stačí zadat do adresní řádky prohlížeče jeho URL adresu, čímž dojde ke spuštění. Takto je možné získat kompletní přístup ke zdrojovému kódu, pozměnit fungování webu či jej dokonce celý smazat.
Je zjevné že rizika spojená s formuláři mohou být vysoká, a proto je dobré věnovat čas jejich prevenci. Jak ale poznáme, zda jsou ve formulářích nějaké slabiny? Kontrola většiny děr si bohužel vyžaduje větší technické znalosti, ale přesto existuje několik jednoduchých testů, které zvládne provést doslova každý. Pokud v této základní zkoušce webový formulář neobstojí, pak pravděpodobně nevyhoví ani dalším bezpečnostním kritériím.
Nemáte technické znalosti ke komplexní kontrole bezpečnosti webu? Modrý duch ano!
Ve formulářích bývá zpravidla označeno, jaké kolonky jsou povinné a které nikoliv. Vyzkoušejte si, co se stane, když kliknete na tlačítko “odeslat", aniž byste vyplnili nutné údaje. Správně by se vám měla zobrazit hláška o tom, co je třeba doplnit. Pokud se ale objeví zpráva o úspěšném odeslání, tak je zřejmé, že je něco v nepořádku.
Podobně vyzkoušejte zadat místo číselných údajů text, vyplňte nulu, záporné číslo a nebo cifru s desetinnou čárkou. Zamyslete se, zda je tento formát relevantní vůči datům, které se mají do kolonky vkládat a zjistěte, zda je možné formulář takto odeslat. Nemělo by být možné, aby v restauraci někdo rezervoval místa pro 3,5 osoby, či v e-shopu objednal - 2ks zboží.
Skripty s kusem programu se neobejdou bez určitých znaků jako jsou lomítka a uvozovky. Zkuste zadat do textové kolonky testovací výraz uvedený na obrázku výše simulující jednoduchý skript a vyzkoušejte, zda se formulář povede odeslat, či dojde k nějaké chybě. Například se může část kódů objevit někde v obsahu webu, nebo se poškodí zobrazování stránek formou špatného zalomení či ztučnění textu. Pokud se toto stane, pak jde o závažnou bezpečnostní slabinu.
Zkuste tento kód přepsat do některé kolonky ve webovém formuláři a stiskněte tlačítko Odeslat. Jde to? Je web stále dobře naformátován? Jedná se o jednoduchý test zabezpečení webového formuláře.
U formulářů umožňujících nahrávání příloh je vhodné vyzkoušet vložení nevhodného souborového typu. Například obrázku do pole pro textový dokument nebo naopak. Vznikne-li v nahrávacím okně problém s omezením na vybrané souborové přípony, pak jej můžete obejít přetažením ikonky přímo na políčko “Vybrat soubor" nebo v okně změňte typ souboru na “Všechny soubory". Poté co se soubor pokusíte nahrát nebo formulář odeslat byste měli být upozorněni na neplatnou příponu. Pokud se však soubor nahraje, pak opět může jít o závažnou bezpečnostní chybu.
Takto změníte požadovaný typ souboru.
Pokud jste vyzkoušeli výše zmíněné testy a nenarazili jste na nic podezřelého, tak to znamená, že zadní vrátka nejsou otevřená dokořán. Web je tedy zabezpečený proti těm nejzávažnějším slabinám. V případě, že jste při testování narazili na něco podezřelého, tak nevolejte 158, ale obraťte se na vývojáře vašeho webu.
Chcete-li se dozvědět něco více o zabezpečení internetových stránek, zkuste také článek o HTTPS nebo již dříve zmíněné příspěvky o GITu a správě webu. Z dalších zdrojů by vás mohl také zajímat dokument TOP10 od OWASP popisující nejčastější slabiny na webových stránkách.
Praktický
Inspirující
Zábavný
Nic moc