Grįžti į tinklaraštį
Pagrindai Paskelbta 19.08.2026 Skaitymo trukmė: 6 min.

Kas iš tikrųjų apsaugo formą: CAPTCHA, honeypot, laiko spąstai, CSRF

Dauguma kontaktinių formų prieš šlamštą pasikliauja vienu triuku, o daugelis tų triukų sustabdo tik paprasčiausius robotus. Ką sustabdo kiekvienas apsaugos sluoksnis, kiek jis kainuoja ir koks derinys yra prasmingas.

Šlamštą per kontaktines formas retai siunčia ranka rašantis žmogus. Dažniausiai tai programinė įranga, kuri randa formas, užpildo kiekvieną lauką ir išsiunčia rezultatą – tūkstančius kartų. Yra kelios apsaugos priemonės, ir jos veikia labai skirtingose vietose. Žinodami, ką kiekviena iš jų iš tikrųjų daro, išvengsite dviejų klaidų: formos be tikros apsaugos ir formos, saugomos taip griežtai, kad tikri žmonės pasiduoda.

Apsaugos sluoksnių palyginimas
Sluoksnis ir ką jis sustabdo
  • Honeypot: paprasti robotai, užpildantys kiekvieną lauką
  • Laiko spąstai: scenarijai, kurie pateikia formą iškart po įkėlimo
  • CAPTCHA: dauguma bendro pobūdžio automatizavimo
  • CSRF žetonas: užklausos, siunčiamos tiesiai į galinį tašką
  • Užklausų ribojimas: srautai iš vieno šaltinio
  • Darbo įrodymas: pigūs masiniai pateikimai, be sekimo ar galvosūkių
  • Patikros serveryje: viskas, kas apeina naršyklę
Ko jis nepastebi ar kiek kainuoja
  • Tiksliniai robotai jį praleidžia; blogai paslėptą jį perskaito ekrano skaitytuvai
  • Robotai, kurie palaukia; be parašo serveryje lengva suklastoti
  • Kliūtis visiems, prieinamumo barjerai, dažnai trečiosios šalies; egzistuoja sprendimo paslaugos
  • Robotai, kurie pirmiausia įkelia puslapį, taip pat gauna galiojantį žetoną
  • Šlamštas, paskirstytas per daug IP adresų
  • Ryžtingas siuntėjas su skaičiavimo galia; reikia JavaScript
  • Vienos jos nieko – bet be jų kiekvienas kitas sluoksnis tėra dekoracija
Joks vienas sluoksnis neapima visko. Pigūs, nematomi sluoksniai atfiltruoja didžiąją dalį; sunkesni skirti atkakliam, tiksliniam šlamštui.

Honeypot ir laiko spąstai: nematomi filtrai

Honeypot – tai papildomas laukas, kurio žmonės niekada nemato, pavyzdžiui, CSS paslėptas laukas „website“. Paprasti robotai užpildo kiekvieną lauką, todėl užpildytas honeypot laukas rodo automatizavimą, ir serveris gali tyliai atmesti žinutę. Specialiai Jūsų svetainei parašyti robotai arba tie, kurie atvaizduoja puslapį kaip naršyklė, jį praleidžia. Paslėpkite jį tinkamai: vien už ekrano ribų perkeltą lauką gali perskaityti ekrano skaitytuvai, jį galima pasiekti Tab klavišu arba jį gali užpildyti automatinis pildymas. Naudokite aria-hidden, tabindex -1 ir autocomplete off, taip pat neutralią etiketę, prašančią kiekvieno, kas ten pateks, palikti jį tuščią.

Laiko spąstai užfiksuoja, kada forma buvo pateikta naršyklei, ir atmeta pateikimus, kurie ateina neįtikėtinai greitai. Žmonėms reikia kelių sekundžių perskaityti ir įvesti tekstą; daugelis scenarijų išsiunčia per sekundės dalį. Laiko žyma turi būti tikrinama serveryje ir apsaugota nuo klastojimo, pavyzdžiui, pasirašyta arba laikoma sesijoje – paprastą paslėptą laiko lauką robotas tiesiog perrašo. Ribą nustatykite žemą, nes dėl automatinio pildymo ir tikri žmonės būna greiti. Robotai, kurie tiesiog palaukia, praeina: laiko spąstai yra filtras, o ne siena.

CAPTCHA: veiksminga, bet ne nemokama

CAPTCHA prašo įrodymo, kad veikia ne robotas – nuo paveikslėlių galvosūkių iki fone vykdomų patikrų; populiarios paslaugos – reCAPTCHA, hCaptcha, Cloudflare Turnstile ir Friendly Captcha. Ji sustabdo didžiąją dalį bendro pobūdžio automatizavimo, todėl ir yra tokia populiari. Tačiau kiekvienas matomas galvosūkis yra kliūtis, ties kuria dalis lankytojų pasiduoda, o dauguma paslaugų įkelia trečiosios šalies scenarijų, todėl kyla privatumo ir sutikimo klausimų. Be to, CAPTCHA padeda tik tada, kai ji tinkamai sukonfigūruota: viešas bandomasis svetainės raktas, valdiklis be scenarijaus ar žetonas, kurio serveris niekada netikrina, atrodo kaip apsauga, bet ja nėra. Nemokamas patikrinimas formexposed.com tokias klaidas nurodo iš išorės.

Prieinamumas yra dalis šios kainos. Paveikslėlių galvosūkiai užkerta kelią akliesiems ir daugeliui silpnaregių, garso alternatyvos nepadeda kurčneregiams, o painios loginės užduotys apsunkina žmones su kognityviniais sutrikimais. WCAG 2.2 sėkmės kriterijus 1.1.1 reikalauja tekstinės alternatyvos, apibūdinančios CAPTCHA paskirtį, ir alternatyvių formų skirtingiems pojūčiams. Fone vykdomos patikros išvengia didžiosios dalies šių problemų, tačiau kai jos tampa įtarios, atsarginis variantas dažnai vėl yra vaizdinis galvosūkis – išbandykite šį kelią klaviatūra ir ekrano skaitytuvu.

CSRF žetonas: apsauga nuo klastojimo, o ne nuo šlamšto

CSRF žetonas – tai atsitiktinė reikšmė, kurią serveris įdeda į formą ir tikisi gauti atgal. Jis sukurtas apsaugoti nuo tarpvietinių užklausų klastojimo, kai kita svetainė priverčia lankytojo naršyklę išsiųsti užklausą, kurios lankytojas niekada neketino siųsti. Viešoje kontaktinėje formoje jis turi šalutinį poveikį: robotai, kurie siunčia duomenis tiesiai formos adresu neįkėlę puslapio, atmetami. Bet kuris robotas, kuris atsisiunčia puslapį ir grąžina žetoną, praeina. Dauguma karkasų ir formų įskiepių CSRF žetonus vis tiek turi – palikite juos įjungtus, bet nelaikykite jų apsauga nuo šlamšto.

Kas turi vykti serveryje

Vien naršyklėje atliekamos patikros nieko neapsaugo
Viskas, kas vykdoma tik naršyklėje – JavaScript patvirtinimas, honeypot lauką tikrinantis scenarijus, CAPTCHA žetonas, kurio niekas netikrina, – praleidžiama, kai tik kas nors išsiunčia užklausą tiesiogiai. Kiekvienas sprendimas dėl žinutės priėmimo turi būti priimamas serveryje.
  • Serveryje dar kartą patikrinkite kiekvieną lauką: privalomus laukus, ilgį, el. pašto formatą ir tai, kad laukuose, kurie patenka į laiško antraštes, nebūtų eilučių lūžių.
  • Kiekvieno pateikimo metu patikrinkite CAPTCHA ir darbo įrodymo žetonus išdavusioje paslaugoje arba savo kode ir atmeskite pakartotinai naudojamus žetonus.
  • Ribokite pateikimų skaičių vienam IP adresui per laiko intervalą. Tai sustabdo srautus iš vieno šaltinio; per daug adresų paskirstytam šlamštui reikia kitų sluoksnių.
  • Apsvarstykite darbo įrodymą: prieš siųsdama naršyklė išsprendžia nedidelę skaičiavimo užduotį. Lankytojai nemato jokio galvosūkio ir niekas nesekama, tačiau masinis pateikimas tampa brangus.

Protingas derinys: du ar trys sluoksniai

  1. 1Pradėkite nuo nematomų sluoksnių: prieinamo honeypot lauko ir pasirašytų laiko spąstų, abu tikrinami serveryje.
  2. 2Pridėkite užklausų ribojimą kiekvienam IP adresui, kad vienas šaltinis negalėtų užtvindyti formos.
  3. 3Jei tikslinis šlamštas vis dar prasiskverbia, pridėkite darbo įrodymą ar CAPTCHA – geriausia be matomo galvosūkio ir su prieinama alternatyva.
  4. 4Palikite Jūsų karkaso teikiamą CSRF žetoną – kaip papildomą naudą, o ne kaip gynybą.
  5. 5Išbandykite rezultatą kaip lankytojas – tik klaviatūra, su ekrano skaitytuvu, telefone – ir patikrinkite, ar tikros žinutės vis dar ateina.

Daugelyje svetainių honeypot laukas, laiko spąstai ir užklausų ribojimas kartu jau pašalina didžiąją dalį bendro pobūdžio šlamšto be jokios matomos kliūties; CAPTCHA yra atsarga tam atvejui, jei to nepakanka. WordPress svetainėse nemokamas formexposed įskiepis sujungia honeypot lauką, laiko patikrą ir darbo įrodymą be Google. Norėdami pamatyti, ką Jūsų forma rodo iš išorės – kokie sluoksniai yra, ar CAPTCHA sukonfigūruota veiksmingai, – nemokamam patikrinimui formexposed.com tereikia domeno, paskyros nereikia. Jis nemato Jūsų serverio kodo, todėl serverio pusės dalis lieka Jūsų užduotis.