Pređi na sadržaj
FFormhook
Nazad na blog

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

  1. 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.
  2. Ciljani napadi — neko (ili nečiji botnet) bombarduje baš vaš endpoint, često samo zato što postoji.
  3. 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 besplatno

Bez kreditne kartice · pročitajte dokumentaciju

Nastavite čitanje