CAPTCHA: ochrana formuláře před roboty
CAPTCHA je test, který má odlišit člověka od robota dřív, než formulář odešle zprávu, registraci nebo objednávku. Na spam funguje, ale zdržuje i skutečné zákazníky a některým z nich formulář úplně zavře. Proto se vyplatí vědět, jaké druhy existují a kdy si vystačíte s ochranou, kterou návštěvník vůbec nevidí.
Aktualizováno
Co zkratka znamená a jak test funguje
CAPTCHA je zkratka z anglického „Completely Automated Public Turing test to tell Computers and Humans Apart“ – plně automatický test, který rozliší počítač od člověka. Princip je vždy stejný: úloha má být pro člověka snadná a pro program obtížná. Kdysi to byl zdeformovaný text, dnes spíš výběr obrázků nebo nenápadné vyhodnocení chování v prohlížeči.
Potíž je v tom, že stroje se zlepšují. Rozpoznávání textu i obrázků se programům daří stále lépe, takže testy musí být čím dál těžší – a s nimi roste i otrava pro člověka.
Druhy CAPTCHA, které potkáte
| Typ | Co návštěvník dělá | Hlavní nevýhoda |
|---|---|---|
| Textová nebo početní | Opíše pokřivené znaky nebo spočítá jednoduchý příklad. | Roboti ji snadno obejdou, lidem se slabším zrakem vadí. |
| Obrázková | Vybírá dlaždice se semafory, přechody nebo auty. | Zdržuje, na mobilu se špatně trefuje, nevidomý ji bez alternativy nevyřeší. |
| Zaškrtávací políčko | Klikne na „Nejsem robot“, při podezření dostane obrázky. | Služba vyhodnocuje chování a údaje prohlížeče – otázka souhlasu a GDPR. |
| Neviditelná, se skóre | Nic. Služba na pozadí přidělí skóre, jak pravděpodobně jde o člověka. | O hranici skóre rozhoduje web; přísné nastavení odmítne i lidi. |
Nejznámější je reCAPTCHA od Googlu, která má varianty se zaškrtávacím políčkem i neviditelnou se skóre. Existují i alternativy jiných poskytovatelů, které slibují menší sběr údajů. Co přesně který poskytovatel zpracovává, ověřte v jeho aktuální dokumentaci.
Proč CAPTCHA může vadit
- Přístupnost. Pravidla WCAG vyžadují, aby obrázkový test měl alternativu v jiné podobě, třeba zvukovou. I ta je ale pro řadu lidí obtížná a přihlášení podmíněné řešením hádanky omezuje WCAG 2.2 ještě víc. Širší souvislosti shrnuje heslo Přístupnost webu.
- Ztracené poptávky. Každý krok navíc je příležitost formulář zavřít. Kdo spěchá na mobilu, třetí kolo semaforů neřeší.
- Osobní údaje a cookies. Služby třetích stran načítají cizí skripty a vyhodnocují údaje o zařízení. Musí to být uvedené v zásadách ochrany osobních údajů a je potřeba posoudit, jestli k tomu nepotřebujete souhlas.
- Rychlost. Skript ochrany se stahuje z cizího serveru a přidává stránce váhu, i když formulář nikdo nevyplní.
Šetrnější alternativy
Na většině malých webů se spam dá zastavit opatřeními, která návštěvníka nijak nezdrží. Nejlépe fungují v kombinaci:
- Honeypot – skryté pole, které člověk nevidí a nevyplní. Robot vyplňuje všechno, takže se prozradí.
- Kontrola času – formulář odeslaný sekundu po načtení stránky nevyplnil člověk.
- Ověření na serveru – kontrola formátu e-mailu, délky zprávy a povinných polí až na straně serveru, ne jen v prohlížeči.
- Omezení počtu odeslání z jedné adresy za určitou dobu.
- Filtr obsahu – zprávy plné odkazů nebo v cizím písmu se odloží stranou místo doručení.
Jednoduchý honeypot v HTML může vypadat takto:
<div class="hp" aria-hidden="true">
<label for="web">Nevyplňujte</label>
<input id="web" name="web" type="text"
tabindex="-1" autocomplete="off">
</div>
<!-- v CSS: .hp { position: absolute; left: -9999px; } -->
<!-- server: když pole „web“ není prázdné, zprávu zahodí -->Pole je schované mimo obrazovku, vyřazené z pohybu klávesnicí a skryté i pro čtečky, takže nikoho nezmate. Podrobný postup, co dělat, když spam už chodí, najdete v průvodci Spam z formuláře.
Kdy CAPTCHA dává smysl
Viditelný test má své místo tam, kde jde o víc než o otravný e-mail: registrace účtů, přihlášení, které někdo zkouší prolomit, rezervace omezených míst nebo objednávky, které spouštějí platbu či zásilku. I tam se vyplatí test ukázat jen při podezření, ne každému.
Obyčejný poptávkový nebo kontaktní formulář ho většinou nepotřebuje. Kontaktní formulář je u nás součástí už Vizitkového webu za 15 000 Kč; konkrétní ochranu proti spamu nastavíme podle toho, kolik a jakého spamu na web chodí.
Časté otázky
Potřebuje reCAPTCHA souhlas s cookies?
Jednoznačná odpověď neexistuje a výklady se liší. reCAPTCHA načítá skripty Googlu a zpracovává údaje o návštěvníkovi, proto ji uveďte v zásadách ochrany osobních údajů a s právníkem posuďte, jestli ji lze provozovat bez souhlasu. Jednodušší je zvolit ochranu, která nic třetí straně neposílá.
Proč mi spam chodí, i když mám CAPTCHA?
Část spamu neposílají roboti, ale lidé placení za vyplňování formulářů – a ty žádný test nezastaví. Další část obchází slabé nebo špatně nastavené ověření, například když server nekontroluje výsledek testu. Pomůže kombinace více opatření a filtr obsahu zprávy.
Stačí honeypot místo CAPTCHA?
Na malém firemním webu často ano, hlavně ve spojení s kontrolou času vyplnění. Proti cílenému útoku na konkrétní web je slabší, ale tam se nasadí další vrstva, až když je potřeba. Výhodou je, že poctivý návštěvník o ochraně vůbec neví.
Je CAPTCHA v rozporu s pravidly přístupnosti?
Ne automaticky. WCAG ji připouští, pokud má alternativu v jiné podobě – například zvukovou verzi k obrázkovému testu – a pokud nebrání přihlášení lidem, kteří neumí řešit hádanky. V praxi ale bývá alternativa sama o sobě těžko použitelná.