Blog
Spam kontakt formi: honeypot, ograničenje zahteva i Turnstile
· 3 min čitanja
Objavite formu, sačekajte nekoliko dana, i botovi je pronađu. Razumevanje kako oni rade čini odbranu očiglednom — i objašnjava zašto je pravi odgovor slojevi zaštite, a ne jedan nuklearni CAPTCHA.
Upoznajte neprijatelja: tri vrste spama u formama
- Glupi crawleri — skripte koje pronalaze svaku
<form>na vebu i zasipaju POST zahtevima action URL. Popune svako polje koje vide. Ovo čini ogromnu većinu obima. - Ciljani napadi — neko (ili nečiji botnet) bombarduje baš vaš endpoint, često samo zato što postoji.
- Ljudske spam farme — stvarni ljudi plaćeni da popunjavaju forme. Retkost kod kontakt formi; nijedna automatizovana odbrana ih potpuno ne zaustavlja, i to je u redu — oni su statistička greška zaokruživanja.
Svaki sloj ispod odgovara jednom od ovih slučajeva.
Sloj 1: honeypot (zaustavlja crawlere)
Honeypot je dodatno polje koje ljudi nikad ne vide — skriveno preko CSS-a — ali koje glupi botovi savesno popune jer se nalazi u markupu:
<input type="text" name="website" tabindex="-1" autocomplete="off"
style="position:absolute;left:-9999px" aria-hidden="true">Pravilo na strani servera: ako to polje stigne popunjeno, unos je spam. Tiho ga prihvatite (vratite 200) i odbacite, tako da bot ništa ne nauči. Ovaj jedan trik eliminiše najveći deo spama uz nultu frikciju za ljude — bez zagonetki, bez klika, bez ičega.
Detalji koji su bitni: dajte mu primamljivo ime (website, phone2), izbacite ga iz redosleda tabulacije, i označite ga sa aria-hidden da ga čitači ekrana preskoče — nevidljivo za pristupačnost, ne samo vizuelno skriveno.
Sloj 2: ograničenje zahteva (zaustavlja napade)
Honeypot ne pomaže kada bot šalje POST sa naizgled validnim podacima 500 puta u minuti. Ograničenja po IP adresi i po formi pomažu: pravi čovek ne šalje kontakt formu deset puta za šezdeset sekundi, tako da se ograničavanjem ne gubi ništa vredno. Ograničenja treba da postoje na endpointu koji prima podatke, pre čuvanja i obaveštenja — inače napad i dalje puni vaš inboks, čak i ako je označen.
Sloj 3: Turnstile (kada pritisak zahteva izazov)
Kada forma privuče pametnije botove — headless pregledače koji renderuju CSS i zaobiđu vaš honeypot — prelazite na izazov. Cloudflare Turnstile je moderan izbor: proverava ljudskost preko signala iz pregledača i obično se rešava nevidljivo, bez kvizova sa fotografijama hidranata. Tok je standardan: vidžet na vašoj stranici generiše token, server koji prima podatke proverava token kod Cloudflare-a, a unosi bez validnog tokena se odbijaju.
Turnstile je sloj koji dodajete kada zatreba, a ne preventivno — svaki izazov, koliko god blag bio, košta deo konverzije.
Kako to izgleda kada je to nečiji tuđi posao
Ako sami vodite prijem formi, implementirate sva tri sloja — plus održavate ih u funkciji zauvek. To je veliki deo razloga zašto bekend za forme postoji. Formhook podrazumevano isporučuje honeypot, ograničenja po IP adresi i po formi (ograničenja zahteva), i CORS listu dozvoljenih po formi, na svakom paketu uključujući besplatni; Turnstile je čekboks u podešavanjima forme kada želite dodatni sloj.
Koji god put izaberete, strategija je ista: prvo nevidljive odbrane, izazovi vidljivi ljudima na kraju, i nikad CAPTCHA kao prvi potez.
Funkcionalna forma u jednoj liniji
Hostovano u EU, unosi se čuvaju zauvek, push obaveštenja na svakom paketu.
Počnite besplatnoBez kreditne kartice · pročitajte dokumentaciju
Nastavite čitanje
- Šta je form backend? (I kada vam je potreban)Form backend prima, čuva i prosleđuje unose sa formi na vašem sajtu, tako da ne morate da održavate server. Evo kako rade i kada vam je jedan potreban.
- Testiranje kontakt forme: kontrolna lista pre lansiranjaPokvarena kontakt forma tiho otkazuje i nedeljama košta klijente. 15-minutna kontrolna lista: osnovni tok, validacija, spam, mobilni uređaji i obaveštenja.
- Mailto linkovi protiv kontakt formi: ko gubi manje klijenata?Mailto linkovi tiho ne uspevaju bez podešenog mejl klijenta i izlažu adresu spam botovima. Kada je mailto u redu, a kada se isplati kontakt forma.