menu

Ochrana formulářů před roboty aka CAPTCHA

K čemu to vlastně je, jak to funguje a proč jsme vytvořili vlastní řešení?

Kdo je robot, co je CAPTCHA?

Robotem se v prostředí internetu nazývá automatický program, který navštíví vaše stránky a provede na nich nějakou automatizovanou činnost. Není to tedy nějaký android z budoucnosti, ale většinou celkem jednoduchý mechanizmus, který získává určité informace o stránkách nebo zneužívá jejich slabin.

Typy robotů

Hodní

Roboti existují zlí i hodní. Hodní roboti jsou především roboti vyhledávačů jako Googlebot, the Baiduspider, Bingbot, YandexBot, and podobné. Tito roboti mohou za to, že se zobrazují vaše stránky na daná klíčová slova a vyhodnocují důležité informace o webu, které následně mají vliv na vaši pozici ve vyhledávání. Pod tuto skupinu spadají také roboti hlasových služeb jako je Alexa’s Crawler a Applebot (Siri), kteří si prochází weby kvůli odpovědím na dotazy uživatelů.
Dále pak máme roboty sociálních sítí jako Facebook Crawler či Pinterest Crawler. Tito roboti vyhodnocují obsah po vytvoření příspěvků na daných sociálních sítích s odkazem na váš web, aby vyfiltrovali spam či doplnili odkaz o relevantní data (hlavička, obrázek, atp.). Toto je dobře vidět na odkazech vkládaných třeba z novinářských webů.
Agregátory, jako Feedly Fetcher, které hledají RSS nebo Atom feedy na vašem webu a zahrnují je do svého agregovaného feedu.
Posledním typem jsou servisní roboti. Sem spadají například SEMrush bot a AhrefsBot, Uptimebot, WordPress pingbacks a podobné. Tito roboti většinou hlídají stav vašeho webu a měly by být pod vaší kontrolou či kontrolou vašeho webmastera.

Hodné roboty je vhodné na web pouštět. Zároveň je ale nutné určit jim mantinely a pravidla, jako kam smí a kam ne, jak často se mají vracet, co mají indexovat, atp.

Zlí

Zlí roboti se dají rozdělit na tři skupiny a to roboty snažící se váš web znehybnit tzv. DDoS útoky. Tj. útoky, které přetíží webhosting natolik, že přestane odpovídat nebo přímo spadne. Ochrana před nimi se řeší na straně webhostingu. Druhou skupinou jsou loupeživí roboti, kteří se snaží získat známými postupy citlivá data uživatelů. Na to je dobré udržovat systém aktuální a ne všeobecně otevřený... více v příspěvku Proč nepouživám tradičí frameworky. Případně se snaží vytežit obchodní informace (ceny, obrázky) či způsobit škodu finanční povětšinou falešnými prokliky. Takový robot, který vám stokrát za vteřinu klikne na PPC odkaz není veselá záležitost.. ty ale musí řešit strana zobrazující váš odkaz. Vy můžete maximálně monitorovat, zda z odkazu dané kampaně nechodí tisíce návštěvníků s okamžitým opuštěním. Posledním typem jsou SPAM boti a na ty se právě zaměřuje ochrana proti robotům známá jako CAPTCHA.

Spam boti zneužívají formuláře na webu a to tak, že přes ně posílají svá data buď s odkazy nebo s různými kusy škodlivého kódu.
Spam boti se většinou nesnaží zahltit vaši emailovou schránku, ale doufají, že formulář odesílá data na adresy, které do něj sami zadají (třeba jako kopie dotazu z webu, která přijde i dotazovanému). Takto může dojít k zablokování služby odesílání emailů na vašem hostingu či v horším případě k zařazení vaší domény do tzv. black listu a v podstatě všichni emailový klienti začnou vaše emaily házet do spamu či rovnou mazat. Což třeba pro eshop může být fatální.

CAPTCHA

CAPTCHA je zkratka pro "completely automated public Turing test to tell computers and humans apart", tedy "plně automatický veřejný Turingův test k odlišení počítačů a lidí". Turingův test je pak v podstatě v této zkratce definován. Jedná se o test, který podle stylu řešení rozpozná, zda se jedná o umělou či živou inteligenci.

Jedná se tedy o nástroj, který by měl idenfitikovat uživatele či případného robota. Logicky tento test nenasadíme na stránky hned po příchodu. Sice bychom tak věděli hned od začátku s kým máme tu čest, ale uživatelský zážitek z našeho webu by byl neskutečně frustrující... k takovéto frustraci již stačí povinná cookie lišta.
Obor působnosti CAPTCHA je tedy eliminace spam botů a to především u formulářů na vašich webech.

Nebudu zde podrobněji rozebírat další metody, které jsou dnes již víceméně součástí moderních řešení a jako samostatné jsou překonané jako honeypots, analýza pohybů myši a podobné.

Proč nepoužijete hotová řešení?

Důvodů, proč jsme se rozhodli jít vlastní cestou a nepoužít řešení třetích stran jako je třebe Google reCAPTCHA, hCaptcha či Friendly Captcha je více.

Prolomitelnost

Řešení reCAPTCHA používá více než 3 miliony webových stránek, hCaptcha pak více než 1 milion a mnoho z těchto stránek má počty zobrazení v milionech za den. Je tedy logické, že tvůrci robotů se zaměří na prolomení takovéto výzvy místo toho, aby řešili prolomení našeho řešení, které používá stovka povětšinou českých stránek. Jen reCAPTCHA musela být za posledních 17 let již třikrát přepracovaná a poslední zprávy ukazují, že nové modely umělé inteligence si s nimi již umí poradit.

Soukromí a bezpečí

Jmenované systémy používají kromě samotného úkolu, kterým je obvykle nějaké rozpoznání obrázků nebo textu většinou také analýzu chování uživatele. Tzn. ukládají sledovací cookies a zjištují jak se na webu pohybujete, čímž zhodnotí, zda nejste robot.. případně zda jste již na jiné stránce toto ověřování nevyplňovali. Tato data jsou však citlivá a mohou být zneužita.

Škálovatelnost a nezávislost

Jelikož je systém náš vlastní, můžeme ho libovolně pro každého uživatele upravit na míru jak je naším dobrým zvykem. V případě větší zátěže nebo prolomení ochrany můžeme pružně zareagovat a celý systém upravit. S tím jde ruku v ruce určitá nezávislost na dodavateli, který může systém kdykoliv bez našeho vědomí změnit. Navíc skript není závislý na další službě (zda běží ověřovací servery nebo ne)  a nezatěžuje web. Celkem má 7.5kB včetně vizuálního obsahu.

Exkluzivita a přizpůsobení

Vlastní CAPTCHA přináší klientům také určitý punc exkluzivity. Nebudete na webu mít to stejné otravné okénko jako miliony ostatních stránek. Můžete mít vlastní ve vašich barvách, zapadající do designu webu a s tématickými obrázky. Jste autoservis, uživatel může vybírat třeba z vozidel, jste projekční kancelář, můžeme použít geometrické obrazce, atp.


Cena

Všechna komerční řešení něco stojí. U hCaptchy se platí za funkce, z reCAPTCHY se platí poplatek za zobrazení (od určitého počtu) atp. Naše řešení je a vždy bude pro naše zákazníky zdarma. Nepotřebuje žádnou údržbu ani úložiště na zpracování sebraných dat. Nepotřebuje ani žádnou speciální funkci hostingu. Běží na PHP>5.0 a libovolném jQuery (ale i to se dá kdyžtak upravit). Pokud chcete použít naši CAPTCHU ale nemáte web od nás, tak je to po domluvě možné. Většina webů by měla být schopná tuto kontrolu implementovat.

Jak funguje naše řešení?

Jedná se o zcela jednoduchý koncept, kdy vybraný formulář dostane speciální parametr a spustí se skript. Skript zobrazí při pokusu o odeslání formuláře automaticky triviální obrázkovou hádanku, kdy uživatel musí z daných obrázků vybrat ten správný. Pokud se test nepovede je iniciován další. Pokud je test vyhodnocen jako chybný více než třikrát, sputí se bezpečnostní timeout na 8 vteřin. Pokud se povede, je formulář odeslán a CAPTCHA ještě verifikována na druhé straně, tedy ve skriptu zpracovávajícím přijatá data. Zabezpečení je pak víceúrovňové:
  • pokud nejsou povoleny skripty je kontrola vždy vyhodnocena jako FALSE
  • obrázky jsou voleny schválně velice podobné, aby nebyly snadno rozlišitelné umělou inteligencí
  • řešení používá honeypot input, který obsahuje zahashovanou hodnotu a je kontrolován na přepsání
  • někdy test nemá správné řešení, tzv. fake test aby znesnadnil případné učení se robotů
  • kontrolujeme rychlost odezvy na výzvu, kdy robot většinou reaguje rychleji než člověk
  • součástí kontroly je zahashovaná hodnota z libovolného inputu ve formuláři, která se neustále mění a je vyhodnocena až na výsledné stránce, tudíž není zachytitelná správnost odpovědi na formuláři (i když se odešle, ještě to neznamená, že bude přijmut)
  • obfuskace a minimalizace kódu včetně obrázků, které jsou v base64 součástí obfuskovaného skriptu.
Naši CAPTCHU si klidně můžete vyzkoušet na formuláři níže.





Kontaktní informace

Ing. Matěj Pavlík
+420 603 386 632
info@unisell.eu

IČ: 87595516
DIČ: 8503100496