Šta zaista štiti obrazac: CAPTCHA, polje zamka, vremenska zamka, CSRF
Većina kontakt obrazaca oslanja se na samo jedan trik protiv neželjene pošte, a mnogi od tih trikova zaustavljaju samo najjednostavnije botove. Šta svaki sloj zaštite zaustavlja, koliko košta i koja kombinacija ima smisla.
Neželjene poruke preko kontakt obrazaca retko dolaze od osobe koja ručno kuca. Uglavnom je to softver koji pronalazi obrasce, popunjava svako polje i šalje rezultat — hiljadama puta. Postoji više načina odbrane i deluju na veoma različitim tačkama. Razumevanje šta svaki zaista radi pomaže Vam da izbegnete dve greške: obrazac bez stvarne zaštite i obrazac toliko strogo čuvan da stvarni ljudi odustanu.
- Polje zamka: jednostavni botovi koji popunjavaju svako polje
- Vremenska zamka: skripte koje šalju odmah nakon učitavanja
- CAPTCHA: većina opšte automatizacije
- CSRF token: zahtevi poslati direktno krajnjoj tački
- Ograničenje učestalosti: poplave iz jednog izvora
- Dokaz rada: jeftina masovna slanja, bez praćenja i zagonetki
- Provere na serveru: sve što zaobilazi pregledač
- Ciljani botovi ga preskaču; ako je loše skriveno, čitači ekrana ga najavljuju
- Botovi koji čekaju; bez potpisa na serveru lako se falsifikuje
- Prepreka za svakoga, barijere pristupačnosti, često treća strana; postoje usluge rešavanja
- Botovi koji prvo učitaju stranicu takođe dobijaju važeći token
- Neželjene poruke raspoređene na mnogo IP adresa
- Odlučan pošiljalac sa računarskom snagom; zahteva JavaScript
- Ništa same za sebe — ali bez njih svaki drugi sloj je ukras
Polje zamka i vremenska zamka: nevidljivi filteri
Polje zamka je dodatno polje koje ljudi nikada ne vide, na primer polje pod nazivom „website“ skriveno CSS-om. Jednostavni botovi popunjavaju svako polje, pa popunjeno polje zamka ukazuje na automatizaciju i server može tiho odbaciti poruku. Botovi napisani za Vaš sajt, ili oni koji iscrtavaju stranicu kao pregledač, preskaču ga. Sakrijte ga pravilno: polje samo pomereno izvan ekrana mogu najaviti čitači ekrana, do njega se može doći tasterom Tab ili ga može popuniti automatsko popunjavanje. Koristite aria-hidden, tabindex -1 i autocomplete off, uz neutralnu oznaku koja svakoga ko tu dospe zamoli da ga ostavi praznim.
Vremenska zamka beleži kada je obrazac dostavljen i odbija slanja koja stižu neverovatno brzo. Ljudima je potrebno nekoliko sekundi da pročitaju i otkucaju; mnoge skripte šalju u deliću sekunde. Vremenski žig mora se proveravati na serveru i zaštititi od menjanja, na primer potpisivanjem ili čuvanjem u sesiji — običan skriveni vremenski podatak bot jednostavno prepiše. Neka prag bude nizak, jer automatsko popunjavanje i stvarne ljude čini brzim. Botovi koji jednostavno sačekaju prolaze: vremenska zamka je filter, a ne zid.
CAPTCHA: delotvorno, ali ne besplatno
CAPTCHA traži dokaz da ne deluje bot — od slikovnih zagonetki do provera u pozadini; uobičajene usluge uključuju reCAPTCHA, hCaptcha, Cloudflare Turnstile i Friendly Captcha. Zaustavlja većinu opšte automatizacije, zbog čega je toliko popularan. Ali svaka vidljiva zagonetka je prepreka pred kojom neki posetioci odustaju, a većina usluga učitava skriptu treće strane, što otvara pitanja privatnosti i pristanka. CAPTCHA pomaže samo ako je pravilno podešen: javni probni ključ sajta, vidžet bez skripte ili token koji server nikada ne proverava liče na zaštitu, ali to nisu. Besplatna provera na formexposed.com ukazuje na takve greške spolja.
Pristupačnost je deo tog troška. Slikovne zagonetke isključuju slepe osobe i mnoge slabovide osobe, audio alternative ne pomažu gluvoslepim osobama, a zamršeni logički zadaci opterećuju osobe sa kognitivnim teškoćama. Kriterijum uspeha WCAG 2.2 1.1.1 zahteva tekstualnu alternativu koja opisuje svrhu CAPTCHA provere i alternativne oblike za različita čula. Provere u pozadini izbegavaju većinu ovoga, ali kada postanu sumnjičave, rezervna opcija često ponovo bude vizuelna zagonetka — testirajte taj put tastaturom i čitačem ekrana.
CSRF token: zaštita od falsifikovanja, a ne od neželjenih poruka
CSRF token je nasumična vrednost koju server stavlja u obrazac i očekuje nazad. Osmišljen je protiv falsifikovanja zahteva sa drugih sajtova, kada drugi sajt navede pregledač posetioca da pošalje zahtev koji posetilac nikada nije nameravao. Na javnom kontakt obrascu ima sporedni efekat: odbija botove koji šalju direktno na adresu obrasca bez učitavanja stranice. Svaki bot koji preuzme stranicu i pošalje token nazad prolazi. Većina radnih okvira i dodataka za obrasce već uključuje CSRF tokene — ostavite ih uključene, ali ih ne računajte kao zaštitu od neželjenih poruka.
Šta mora da se dešava na serveru
- Ponovo proverite svako polje na serveru: obavezna polja, dužinu, format adrese e-pošte i odsustvo preloma redova u poljima koja završavaju u zaglavljima poruka.
- Proverite CAPTCHA tokene i tokene dokaza rada pri svakom slanju, kod usluge koja ih je izdala ili u svom kodu, i odbacite ponovo korišćene tokene.
- Ograničite slanja po IP adresi i vremenskom intervalu. To zaustavlja poplave iz jednog izvora; za neželjene poruke raspoređene na mnogo adresa potrebni su drugi slojevi.
- Razmotrite dokaz rada: pre slanja, pregledač rešava mali računarski zadatak. Posetioci ne vide zagonetku i ništa se ne prati, ali masovno slanje postaje skupo.
Razumna kombinacija: dva ili tri sloja
- 1Počnite nevidljivim slojevima: pristupačnim poljem zamkom i potpisanom vremenskom zamkom, koje server proverava.
- 2Dodajte ograničenje učestalosti po IP adresi da jedan izvor ne bi mogao da preplavi obrazac.
- 3Ako ciljane neželjene poruke i dalje prolaze, dodajte dokaz rada ili CAPTCHA — po mogućstvu bez vidljive zagonetke i sa pristupačnom alternativom.
- 4Zadržite CSRF token koji obezbeđuje Vaš radni okvir — kao dodatak, ne kao odbranu.
- 5Testirajte rezultat kao posetilac — samo tastaturom, čitačem ekrana, na telefonu — i proverite da li stvarne poruke i dalje stižu.
Na mnogim sajtovima polje zamka, vremenska zamka i ograničenje učestalosti zajedno već uklanjaju većinu opštih neželjenih poruka bez vidljive prepreke; CAPTCHA je rezerva kada to nije dovoljno. Na WordPress-u besplatni dodatak formexposed kombinuje polje zamku, vremensku proveru i dokaz rada bez potrebe za Google-om. Da biste videli šta Vaš obrazac pokazuje spolja — koji slojevi postoje i da li je CAPTCHA delotvorno podešen — besplatnoj proveri na formexposed.com potreban je samo domen, bez naloga. Ne može videti kod Vašeg servera, pa deo na serveru ostaje Vaš posao.