Útoky spamarů na webové služby nabírá každým dnem na obrátkách. Jejich hlavní premisou, kromě zasílání všemožných mailů a všemožné adresy, je také hledání formulářů na různých stránkách internetu a skrz ně zasílat zprávy, většinou s obsahem odkazu na nákup prášků pro zvyšování potence (každý ví, o jakou tabletu se jedná) a jiných potencionálně nebezpečných věcí, s cílem přilákat k sobě zákazníky.
U emailů je již obrana na vysoké úrovni a každý mailový server podporuje nějaký spamový filtr, který více či méně filtruje nevyžádanou poštu. Ovšem jak zabránit skriptům v odesílání spamových zpráv skrz formuláře na webu? Jistě existuje hodně technik, z nichž nejpoužívanější je právě CAPTCHA.
CAPTCHA je jinými slovy bezpečnostní technika před útokem spamerů, kteří se snaží svými naprogramovanými roboty vyhledávat různé formuláře a skrz ně zasílat zprávy. Ochrana před možností odeslat skriptem formulář tkví v nutnosti opsat do políčka formuláře kód či text, který je nejčastěji zobrazen v podobě obrázku, či jednoduché otázky, kterou skript nemůže rozluštit. Tato ochrana je velmi účinná, avšak pro uživatele značně nepříjemná, neboť musí odpovídat na stupidní otázku, nebo opisovat kód z často skoro nečitelného obrázku. Jak je možné takovou CAPTCHu jednoduše vytvořit?
Standardně používám obrázkovou CAPTCHu, tj. vytvořím políčko pro zadání CAPTCHA kódu a v blízkosti něj vytvořím obrázek. Obrázek je generovaný serverem, který má hlavně za úkol uložit si hodnotu kódu do serverové proměnné SESSION. Tato proměnná samozřejmě na veřejném webu vidět není a její hodnota je zobrazena obrázkem, který jaksi spamové skripty přečíst neumějí. Následně při odeslání formuláře zkontroluji na serveru vyplněný kód s hodnotou uloženou v SESSION. Jestliže se shodují, formulář považuji za korektní.
Takto se dá vytvořit jednoduchá CAPTCHA. Ve svých projektech CAPTCHu používám snad u všech formulářů a bylo ji proto nutné trošku vylepšit, aby neustále neotravovala slušné uživatele. Dal jsem si jen takovou otázku, proč by uživatel musel vyplňovat kód, když to za něj může udělat JavaScript?
Kdo rozluští tyto captcha kódy, zaslouží si obdiv nás všech :)
Je zkopírována z jedné VELMI používané služby! Denně ji musí luštit stovky uživatelů – paráda.
Použití JavaScriptu je vhodné, neboť ho spamoví roboti samozřejmě neumějí a je pro ně prakticky neviditelný. Úkol takovéhoto skriptu je ten, že po načtení stránky odešle AJAXem dotaz na server, který mu zpět zašle kód CAPTCHA, který je uložen v serverové proměnné SESSION. Takto získaný kód vloží do políčka pro zadání kódu z obrázku, a tím je prakticky hotovo. Uživatel již nemusí tento kód vyplňovat. Navíc ještě u svých projektů skryju políčko pro zadání kódu a obrázek předreligis.lupa.cz
uživatelem (standardně CSS stylem display:none) a ten prakticky ani nepozná, že zde nějaká ochrana proti spamu existuje. Což je přesně to, oč nám jde: uživatel nemusí vyplňovat námi vytvořenou ochranu před „nechtěnými“ uživateli.
Proč by roboti neuměli používat javascript. Např. V8 JavaScript Engine je open-source. Samozřejmě, že kvůli vašemu blogu to implementovat do robota nikdo nebude, ale kvůli gmailu, by si s tím spameři dali jistě tu práci.
Proto musí google vymýšlet sakra těžké obrázky, které sotva přečte člověk, protože dnešní roboti umí přes OCR leccos rozeznat.
Je mi jasné, že někteři roboti by teoreticky mohli používat javascript. Teď mě tak napadlo např. vzít a využít open source kód Firefoxu a přestavět ho na robota. Nicméně, pro většinu stupdních robotů, kterých je na netu fůra, tato technika plně postačuje pro většinu projektů. Pokud se zjistí, že roboti této funkčnosti dosáhli ve velkém měřítku, tak se zabezpečení bude měnit. Ale takhle je to vlastně se všemi bezpečnostními prvky, nebo ne?
Napadla mě možná další věc, jak udělat zabezpečení. (jen nápad, do detailu teď nemyslím)
A sice tak, že by se místo standardního tlačítka zobrazil obrázek (dostatečně veliký) a na něm by se náhodně zobrazovalo jediné místo (řekněme kolečko o xy souřadnicích a nějakém poloměru), na které by se kliklo a tím by se (podle x-sové a y-psylonové souřadnice kliknutí, které se zasílá v požadavku) zjistilo, že daný uživatel není robot.
ad 2. Vas druhy napad by byl resitelny nejspise javascriptem, takze opet narazite na to, zda ho roboti umi. Jinak vse se da obejit, jde jen o to, jestli se to spamerum vyplati. Navic dle me poradna spam ochrana nevyzaduje akci uzivatele, coz je v dnesni dobe trochu problem, prestoze toto lze javascriptem resit. Je vsak mylne vychazet z toho, ze spambot neumi JS,
"Nicméně, pro většinu stupdních robotů, kterých je na netu fůra, tato technika plně postačuje pro většinu projektů."
Ale přitom to ukazujete na captche googlu. A na něj stupidní roboti nejdou.
K tomu druhému nápadu: kolik těch obrázků byste potom musel generovat? 10, 100, 1 000 000 ... protože i jednou za 100 pokusů se to robotovi stále vyplatí.
Jo a spameři dohnali Google až k tomuto http://www.maxiorel.cz/chcete-gmail-potrebujete-mobil
ad 7. No, máš pravdu v tom, že kdyby se chtěl někdo opravdu hacknout na nějaký náš projekt, tak to asi udělá. Problém je v tom, že když útočník chce, tak většina CAPTCHA se dá hacknout (viz. http://caca.zoy.org/wiki/PWNtcha). To by museli ovšem studovat kód všech stránek a to se jim jaksi moc nevyplatí.
aco 3d captcha, kterou jsem videl treba tady http://registrace.libimseti.cz/ to je taky snadno prustrelne
[12]
- tma ma byt ozaunik, jako ze otazka
"a co 3d captcha, kterou jsem videl treba tady http://registrace.libimseti.cz/ to je taky snadno prustrelne?"
Táto ochrana spája skôr nevýhody ako výhody viacerých ochrán.
Obrázková ochrana - neustála nutnosť byť pripravený na zmenu obrázka pred univerzálnejšími robotmi.
JavaScript - veľmi nízka ochrana pred špecializovaným robotom na konkrétny web.
Asi ide v článku o ochranu pred univerzálnejšími robotmi, v takom prípade je prakticky nepreniknuteľná otázka v češtine, tak aby bolo roboticky obtiažne zistiť odpoveď.
Napríklad: "Napište poslední tři písmena příjmení správce webu" a pod.
Ak ide o komfort návštevníkov, tak to môže byť doplnené JavaScriptom, ktorý sa robotom neoplatí implementovať.
ad 2) "Teď mě tak napadlo např. vzít a využít open source kód Firefoxu a přestavět ho na robota."
tak to je zbytecna prace, existuje plugin do Firefoxu, jmenuje se Selenium, ten prave neco takoveho dela, ve firme ho pouzivame jako jeden z testovacich toolu, da se to v pohode ridit javou (a buhvi cim jeste).
ten napad s js je opravdu dost scestnej, pro nekoho se zkusenostma s automatickym testovanim je to otazka cca pul hodiny az hodiny, nez pripravi robota (za predpokladu, ze uz ma hotovej testovaci framework - coz mit bude)
Nejde o to, že je možné spraviť robota s podporou JavaScriptu, ale o to, že sa to nevyplatí.
Miesto jednoduchého analyzátoru textu a obrázkových ochrán, ktoré sú síce zložité, no tie sa analyzovať vyplatí, lebo ich používajú aj vysoko navštevované weby a sú v princípe všade rovnaké, by to bol veľmi ťažkopádny robot.
ad 17) ale jo, ja souhlasim, ze ten robot bude mene efektivni nez klasickej blbecek, co jen parsuje html. jen poukazuju na to, ze ten js jsou otevreny vrata (doba prekonani pul az hodina). co se tyce tezkopadnosti, takovehle tooly jsou omezeny jadrem prohlizece, ale porad dokazou prochazet stranky rychlosti 2 az 100 za minutu (typicky kolem 20 stranek/minutu)
Nejde o dobu prekonania, ale o to, či na to treba použiť ľudský čas.
Ak áno, tak sa to pre všetky stránky s malou návštevnosťou nevyplatí.
JavaScript sú otvorené dvere, no nie je problém ich zavrieť, alebo ich spraviť tak zložité, že to bude pre robota neefektívne, napríklad bude treba vykonať výpočet s rozumnne zvoleným priemerným časom výpočtu, alebo nutnosťou stiahnuť všetko tak, ako iný návštervník. Miesto Javascriptu je možné na vyplnenie využiť Javu, Flash...
Javascript ja fakt zcestny. To je zalezitost chvilky takovou vec obejit (take doporucuji Selenium). Nejlepsi captcha je semanticka. Otazky typu:
Zadejte treti slovo z teto vety.
Kolik je pet plus dve.
Kolik cipu ma peticipa hvezda.
Kolik rohu ma stul.
Proste debilni otazky na ktere zna kazdy odpoved, ale na ktere je pocitac zatim kratky.
2001 vznik první firmy na výrobu internetových stránek při VŠ, 2003 výroba internetových obchodů, 2005 výroba prvního skladového a fakturačního systému, napojení na MoneyS3, Pohoda, Cézar, nyní se věnuji SEO, prodejní taktice na internetových obchodech, plánování a strategii internetových obchodů.