CAPTCHA je prisutna – ali ništa ne štiti
Vidljiv widget reCAPTCHA, hCaptcha ili Turnstile malo govori o tome je li obrazac zaštićen. Evo tipičnih pogrešnih konfiguracija i kako provjeriti vlastite obrasce za nekoliko minuta.
Mnogi vlasnici mrežnih stranica dodaju CAPTCHA-u kontaktnom obrascu, vide malu oznaku ili potvrdni okvir i smatraju problem neželjene pošte riješenim. A smeće i dalje stiže. Često je sama CAPTCHA u redu – samo nije povezana ni s čim što bi moglo zaustaviti bota. Ovaj članak opisuje tipične načine na koje reCAPTCHA, hCaptcha i Cloudflare Turnstile postaju ukras te kako provjeriti vlastite obrasce.
Gdje se zaštita doista odvija
Sve tri usluge rade prema istom načelu. Skripta u pregledniku provodi svoje provjere i obrascu predaje token – kratak niz znakova koji kaže „ovaj je posjetitelj prošao”. Token putuje s predajom obrasca na Vaš poslužitelj. Tek se ondje donosi stvarna odluka: Vaš poslužitelj šalje token zajedno s tajnim ključem pružatelju usluge i dobiva odgovor – uspjeh ili neuspjeh, a za reCAPTCHA v3 i ocjenu. Ako nedostaje ijedna karika tog lanca, widget i dalje izgleda potpuno normalno, ali bot koji šalje izravno obrađivaču Vašeg obrasca prolazi ravno kroz njega.
Testni ključ koji sve propušta
Google, hCaptcha i Cloudflare objavljuju posebne testne ključeve kako bi programeri mogli izvoditi automatizirane testove bez rješavanja zagonetki. Uz odgovarajući testni tajni ključ provjera uvijek uspijeva – to im je i svrha. Namijenjeni su lokalnim i pripremnim okruženjima, ali redovito prežive prelazak u produkciju: programer ih zalijepi tijekom izrade, stranica se objavi i nitko ih ne zamijeni. reCAPTCHA barem prikazuje obavijest u widgetu da je samo za testiranje, ali kod nevidljive postavke gotovo nitko ne gleda. Ako su i testni ključ stranice i testni tajni ključ u produkciji, svaka predaja prolazi, bilo da dolazi od čovjeka ili bota; ako je samo ključ stranice testni, provjera umjesto toga ne uspijeva i stvarne poruke mogu biti odbijene.
Token koji nitko ne provjerava
Drugi klasik je poslužitelj koji nikad ne pita pružatelja usluge. Widget radi, token se stvara i šalje, a obrađivač obrasca ga jednostavno zanemaruje. Tipični su izvori ručno pisani obrasci, kopirani isječci koji pokrivaju samo stranu preglednika i napola dovršene postavke dodataka. Blizak slučaj: poslužitelj poziva uslugu provjere, ali provjerava samo je li zahtjev prošao, a ne što odgovor kaže. Ili je prag ocjene za reCAPTCHA v3 postavljen na 0, što prihvaća svaku ocjenu koju usluga može vratiti. Neki obrađivači pri pogrešci dopuštaju prolaz: ako token nedostaje ili provjera ne uspije, svejedno prihvaćaju poruku – a bot jednostavno izostavi token.
Kad se widget zapravo nikad ne učita
Druge pogrešne konfiguracije umjesto toga kvare stranu preglednika. Ako ključ stranice nije registriran za domenu – tipično nakon prelaska iz pripremnog okruženja u produkciju, promjene domene ili nove poddomene – pružatelj usluge odbija izdavati tokene i prikazuje pogrešku u widgetu ili konzoli preglednika. Nakon promjene teme ili ažuriranja dodatka oznake widgeta mogu ostati na stranici, a skripta koja ih pokreće nestati. Alat za privolu za kolačiće može imati isti učinak ako blokira CAPTCHA skriptu dok posjetitelj ne pristane. Što slijedi ovisi o poslužitelju: ako inzistira na valjanom tokenu, stvarni posjetitelji više ne mogu slati poruke i nitko ne primjećuje izgubljene upite; ako ne inzistira, botovi slobodno prolaze.
Još dva slučaja lako promaknu. Kod reCAPTCHA v3 oznaka u kutu pokazuje samo da je skripta učitana negdje na stranici – možda putem teme ili drugog dodatka – dok je integracija u samom dodatku za obrasce isključena. A dodaci za predmemoriranje mogu pohraniti stranicu zajedno s tokenom ugrađenim u HTML. CAPTCHA tokeni vrijede samo nekoliko minuta i mogu se provjeriti samo jednom pa predmemorirani token ne uspijeva za stvarne posjetitelje; primamljiv „popravak” isključivanjem provjere tiho uklanja zaštitu.
- Widget prikazuje obavijest „samo za testiranje”
- Oznaka v3 nalazi se u kutu
- Widget se prikazuje i vraća token
- Neželjena pošta je prestala – ali i stvarni upiti
- Upotrebljavaju se javni testni ključevi i svaka provjera uspijeva
- Integracija reCAPTCHA-e u dodatku za obrasce isključena je
- Poslužitelj nikad ne šalje token na provjeru ili zanemaruje rezultat
- Ključ stranice nije registriran za domenu ili su predmemorirani tokeni istekli
Kratka samoprovjera
- 1Otvorite stranicu obrasca u privatnom prozoru, otvorite razvojne alate preglednika i u konzoli potražite pogreške CAPTCHA skripte.
- 2Provjerite pojavljuje li se widget doista – jednom prije i jednom nakon prihvaćanja natpisa za kolačiće – i može li se obrazac poslati dok widget nedostaje; to ne bi smjelo biti moguće.
- 3U administratorskoj konzoli pružatelja usluge provjerite navodi li ključ stranice Vašu produkcijsku domenu (uključujući varijante poput www) te odgovaraju li mu ključevi u dodatku za obrasce ili kodu – a ne ključevi iz dokumentacije ili pripremnog okruženja.
- 4U postavkama dodatka za obrasce provjerite je li CAPTCHA integracija omogućena za taj konkretni obrazac; za reCAPTCHA v3 provjerite je li prag ocjene iznad 0.
- 5Ako imate pristup kodu, pronađite provjeru na strani poslužitelja i provjerite odbija li predaju kad je odgovor negativan ili token nedostaje.
- 6Izuzmite stranicu obrasca iz predmemoriranja cijele stranice ili osigurajte da se token stvara iznova u pregledniku.
- 7Pošaljite stvarnu testnu poruku i provjerite stiže li; ponovite provjeru nakon promjena teme, dodataka ili alata za privolu.
CAPTCHA je jedan sloj, a ne cijela zaštita. U kombinaciji s poljem zamke za botove, vremenskom provjerom i filtriranjem na strani poslužitelja pogrešna konfiguracija na jednom mjestu ne ostavlja obrazac potpuno otvorenim. Ako želite brzu sliku stanja svojih obrazaca, unesite domenu na formexposed.com – izvješće pokazuje jesu li dijelovi Vaše CAPTCHA konfiguracije vidljivi izvana u redu.