CAPTCHA tam je – ale nič nechráni
Viditeľný widget reCAPTCHA, hCaptcha alebo Turnstile hovorí málo o tom, či je formulár chránený. Tu sú typické chybné konfigurácie a spôsob, ako svoje formuláre skontrolovať za pár minút.
Mnohí majitelia webových stránok pridajú do kontaktného formulára CAPTCHA, uvidia, ako sa objaví malý odznak alebo zaškrtávacie políčko, a považujú problém so spamom za vyriešený. Potom však nezmysly prichádzajú ďalej. Samotná CAPTCHA je často v poriadku – len nie je prepojená s ničím, čo by dokázalo bota zastaviť. Tento článok prechádza typické spôsoby, ako sa reCAPTCHA, hCaptcha a Cloudflare Turnstile stanú len dekoráciou, a ako svoje formuláre skontrolovať.
Kde ochrana skutočne prebieha
Všetky tri služby fungujú na rovnakom princípe. Skript v prehliadači vykoná svoje kontroly a odovzdá formuláru token – krátky reťazec, ktorý hovorí „tento návštevník prešiel“. Token putuje s odoslaním formulára na Váš server. Až tam padne skutočné rozhodnutie: Váš server pošle token spolu s tajným kľúčom poskytovateľovi a dostane odpoveď – úspech alebo neúspech a pri reCAPTCHA v3 aj skóre. Ak niektorý článok tohto reťazca chýba, widget stále vyzerá úplne normálne, ale bot, ktorý posiela dáta priamo na obsluhu Vášho formulára, prejde bez problémov.
Testovací kľúč, ktorý prepustí všetko
Google, hCaptcha a Cloudflare zverejňujú špeciálne testovacie kľúče, aby vývojári mohli spúšťať automatizované testy bez riešenia hádaniek. S príslušným testovacím tajným kľúčom overenie vždy uspeje – to je ich jediný účel. Sú určené pre lokálne a staging prostredia, ale pravidelne prežijú presun do produkcie: vývojár ich vloží počas tvorby, stránka sa spustí a nikto ich nevymení. reCAPTCHA vo widgete aspoň zobrazí upozornenie, že je určená len na testovanie, ale pri neviditeľnom nastavení sa tam takmer nikto nepozrie. Ak sú v prevádzke testovací kľúč stránky aj testovací tajný kľúč, prejde každé odoslanie, či už pochádza od človeka, alebo od bota; ak je testovacím kľúčom len kľúč stránky, overenie naopak zlyhá a skutočné správy môžu byť odmietnuté.
Token, ktorý nikto nekontroluje
Druhou klasikou je server, ktorý sa poskytovateľa nikdy nespýta. Widget beží, token sa vytvorí a odošle a obsluha formulára ho potom jednoducho ignoruje. Typickými zdrojmi sú ručne písané formuláre, skopírované útržky kódu, ktoré pokrývajú len stranu prehliadača, a nedokončené nastavenia pluginov. Blízky príbuzný: server síce volá overovaciu službu, ale kontroluje len to, či požiadavka prešla, nie čo hovorí odpoveď. Alebo je hranica skóre pre reCAPTCHA v3 nastavená na 0, čím sa prijme každé skóre, ktoré služba môže vrátiť. Niektoré obsluhy tiež „zlyhávajú otvorene“: ak token chýba alebo overenie zlyhá, správu aj tak prijmú – a bot jednoducho token vynechá.
Keď sa widget v skutočnosti nikdy nenačíta
Iné chybné konfigurácie naopak pokazia stranu prehliadača. Ak kľúč stránky nie je zaregistrovaný pre doménu – typické po presune zo stagingu do produkcie, zmene domény alebo novej subdoméne –, poskytovateľ odmietne vydávať tokeny a zobrazí chybu vo widgete alebo v konzole prehliadača. Po zmene témy alebo aktualizácii pluginu môžu byť značky widgetu stále na stránke, zatiaľ čo skript, ktorý ho oživuje, zmizol. Rovnaký účinok môže mať nástroj na súhlas s cookies, ak blokuje skript CAPTCHA, kým návštevník nesúhlasí. Čo sa stane potom, závisí od servera: ak trvá na platnom tokene, skutoční návštevníci už nemôžu posielať správy a stratené dopyty nikto nezaznamená; ak nie, boty voľne prechádzajú.
Dva ďalšie prípady sa ľahko prehliadnu. Pri reCAPTCHA v3 odznak v rohu ukazuje len to, že skript je niekde na stránke načítaný – možno témou alebo iným pluginom –, zatiaľ čo integrácia v samotnom plugine formulára je vypnutá. A pluginy na ukladanie do vyrovnávacej pamäte môžu uložiť stránku spolu s tokenom vloženým do HTML. Tokeny CAPTCHA platia len niekoľko minút a dajú sa overiť len raz, takže token z vyrovnávacej pamäte u skutočných návštevníkov zlyhá; lákavá „oprava“ v podobe vypnutia kontroly potichu odstráni ochranu.
- Widget zobrazuje upozornenie „len na testovacie účely“
- Odznak v3 je v rohu
- Widget sa vykreslí a vráti token
- Spam prestal – ale aj skutočné dopyty
- Používajú sa verejné testovacie kľúče a každé overenie uspeje
- Integrácia reCAPTCHA v plugine formulára je vypnutá
- Server token nikdy neposiela na overenie alebo ignoruje výsledok
- Kľúč stránky nie je zaregistrovaný pre doménu alebo vypršali tokeny z vyrovnávacej pamäte
Krátka samokontrola
- 1Otvorte stránku s formulárom v súkromnom okne, otvorte vývojárske nástroje prehliadača a v konzole hľadajte chyby skriptu CAPTCHA.
- 2Overte, či sa widget skutočne zobrazí – raz pred a raz po prijatí cookie lišty – a či formulár nemožno odoslať, kým chýba.
- 3V administrácii poskytovateľa overte, či kľúč stránky obsahuje Vašu ostrú doménu (vrátane variantov, ako je www) a či mu zodpovedajú kľúče vo Vašom plugine formulára alebo kóde – nie kľúče z dokumentácie alebo zo stagingu.
- 4V nastaveniach pluginu formulára sa uistite, že integrácia CAPTCHA je zapnutá pre tento konkrétny formulár; pri reCAPTCHA v3 overte, že hranica skóre je vyššia ako 0.
- 5Ak máte prístup ku kódu, nájdite overenie na strane servera a skontrolujte, či odoslanie odmietne, keď je odpoveď negatívna alebo token chýba.
- 6Vylúčte stránku s formulárom z ukladania celých stránok do vyrovnávacej pamäte alebo zabezpečte, aby sa token vytváral v prehliadači vždy nanovo.
- 7Pošlite skutočnú testovaciu správu a overte, že dorazí; kontrolu zopakujte po zmenách témy, pluginov alebo nástroja na súhlas.
CAPTCHA je jedna vrstva, nie celá ochrana. V kombinácii s poľom honeypot, časovou kontrolou a filtrovaním na strane servera nenechá chybná konfigurácia na jednom mieste formulár dokorán otvorený. Ak chcete rýchly prehľad o tom, ako sú na tom Vaše formuláre, zadajte svoju doménu na formexposed.com – správa ukáže, či sú časti Vášho nastavenia CAPTCHA, ktoré sú viditeľné zvonku, v poriadku.