Developeři internetových projektů, portálů a rozsáhlejších stránek stále častěji bojují s nájezdy robotů, kteří roznáší spamy, zaplavují diskuse reklamními příspěvky a otravují život administrátorům i návštěvníkům. Jak se proti útokům bránit? Stále existuje několik bezpečných řešení.
Vývoj webových stránek už není tak automaticky přímočarý, jako tomu bylo v minulosti. Chcete-li vytvořit bezpečný web, který odpovídá moderním standardům, pak musíte vydefinovat slabá místa, kudy by jednak mohl zaútočit hacker, spamovací robot či jiní barabové. Je nutné, aby webový vývojář začal přemýšlet jako hacker a sám zjistil, kde má jeho výtvor největší mezery. V tomto článku se zaměříme na některé systémy ochran webů, které se neustále diskutují a kde hrozí při absenci dostatečné ochrany vnější útok.
Častou chybou administrátorů, zejména pak juniorů, je zpřístupnění některých složek na serveru s plnými právy pro kohokoli. Důvodem bývá obvykle usnadnění práce, kdy je potřeba do určité složky umísťovat soubor uživatelů. Fyzicky soubor ukládá Apache (v případě PHP), ale kdo by definoval práva tak složitě, když to jde jednoduše. Tím, že administrátor povolí do složky přístup komukoli, může vzniknout mnoho problémů. Stejně jsou na tom pak soubory, kterým jsou tato plná práva přidělena. Riziko útoku je velké. Neméně závažný prohřešek je, pokud je povoleno zobrazení položek složky. To by mělo být zakázáno přinejmenším souborem „.htaccess“.
Je zřejmé, že heslo do databáze by mělo být bezpečné. Mělo by být ale také bezpečně uloženo. Ideální je, pokud je i v konfiguračním souboru nějakým způsobem šifrováno. Když už by se někdo dostal k šifře hesla, nemusel by najít způsob, kterak jej dešifrovat. Problémem u některých oblíbených redakčních systémů (např. Joomla) je fakt, že instalátor vytvoří standardizovaný účet nejvyššího admina. Pokud si jej administrátor nezmění, hrozí riziko, že server někdo napadne a změní jeho obsah.
Ač se to možná nezdá, publikovat e-mailovou adresu na jakémkoli webu je hazard nejvyššího kalibru. Jakmile na stránku narazí spamovací robot, máte o přísun kvalitního spamu postaráno. Mnohem lepší je využít kontaktního formuláře, který směřuje na skript, jenž toto přeposlání vzkazu zařídí přímo na serveru. Za jistých okolností je možné e-mailovou adresu uvést, je k tomu ale zapotřebí drobné finty. Znak zavináče je nutno v kódu stránky nahradit HTML entitou. Blíže se o tomto způsobu ochrany e-mailových adres dočtete v tomto článku.
Mohlo by se zdát, že v případě využití dobrého způsobu hashování uživatelského hesla je vše v pořádku a přístup je tak bezpečný. O samotné bezpečnosti dnešních hashovacích algoritmů jsme psali v tomto článku. Z pohledu serveru a provozovatele je vše v pořádku. Co když ale mezi vrstvou prohlížeče a serveru stojí ještě nějaký prvek, který hesla odchytává? Uživatele může teoreticky někdo sledovat na síťové vrstvě a zjišťovat pak jeho data. K samotnému hashování dochází v drtivé většině případů až na serveru, což může být již pozdě. Administrátoři by tedy měli zajistit, aby byla hesla kódována ještě před jejich odesláním přes síť. K tomu může posloužit prastarý Javascript, kdy je heslo nějakým, byť jednoduchým, způsobem šifrováno a na serveru pak dešifrováno.
Kdo z vás někdy zprovoznil návštěvní knihu nebo diskuzi na svých stránkách bez zabezpečení, ten asi ví, co weboví roboti dokážou udělat během několika dnů. Pokud je v diskusi nebo návštěvní knize využit běžný formulář bez zabezpečení, dočkáte se během několika dnů desítek, stovek nebo i tisíců „hodnotných“ příspěvků propagujících pornografické weby či přípravky na hubnutí nebo potenci. Kolega, který svou diskuzi na osobních stránkách nezabezpečil, po měsíci zjistil, že má v diskuzi na 10 tisíc příspěvků od robotů.
Zvolil tedy nejméně náročnou ochranu, kdy žádal po diskutujících návštěvnících, ať přepíší určité číslo vypsané slovy do speciální kolonky. Bohužel kontrolu tohoto výrazu prováděl pomocí Javascriptu, takže během týdne se historie zopakovala a databáze byla plná generovaných diskuzních příspěvků stejného charakteru, jak to bylo v případě bez jakéhokoli zabezpečení. Následovala tedy kontrola podobného čísla pomocí ověřovacího PHP skriptu. Toto řešení, ač taktéž jednoduché, zatím roboti neobešli. Jak se v minulosti ukázalo, ani často užívaná Captcha není neprůstřelná.
Vývoj webů je vždy souboj vývojářů se strůjci útoků. Udělat v dnešní době dobře zabezpečený web je nadlidský úkol, protože člověk časem zjistí, že na určitou oblast zapomněl. Nezbývá než stále doplňovat funkční projekty o nové druhy ochran a být na pozoru.
17. 3. 2009
Autor: David Procházka
Seznam.cz přišel s novinkou pro turisty. Společnost přidala novou funkci do portálu Mapy.cz. Jedná se o možnost...
Stále více hlasů ze zasvěcených kruhů mluví o tom, že Microsoft hodlá v srpnu představit svůj nejnovější operační...
Google se ve svých akvizicích zaměřuje na firmy, které pracují s umělou inteligencí a pokročilou analýzou dat...
Ruský soud uložil společnosti Google pokutu dva a půl sextilionů rublů – dvojka následovaná 36 nulami – za omezování...
T-Mobile si letos pro své zákazníky přichystal celou řadu vánočních dárků. Od tradičních telefonů a sluchátek za 1...
Skupina Nova se rozhodla, že omezí spolupráci s operátory Vodafone a T-Mobile. Platforma Voyo už od února nebude...