Kas patiešām aizsargā formu: CAPTCHA, honeypot, laika slazds, CSRF
Lielākā daļa saziņas formu pret surogātpastu paļaujas uz vienu triku, un daudzi no šiem trikiem aptur tikai visvienkāršākos robotus. Ko aptur katrs aizsardzības slānis, ko tas maksā un kāda kombinācija ir saprātīga.
Surogātpasts caur saziņas formām reti nāk no cilvēka, kas raksta ar roku. Pārsvarā tā ir programmatūra, kas atrod formas, aizpilda katru lauku un nosūta rezultātu – tūkstošiem reižu. Pastāv vairāki aizsardzības līdzekļi, un tie darbojas ļoti dažādos punktos. Zinot, ko katrs no tiem patiešām dara, varat izvairīties no divām kļūdām: formas bez reālas aizsardzības un formas, kas apsargāta tik smagi, ka īsti cilvēki padodas.
- Honeypot: vienkāršus robotus, kas aizpilda katru lauku
- Laika slazds: skriptus, kas iesniedz formu uzreiz pēc ielādes
- CAPTCHA: lielāko daļu vispārējās automatizācijas
- CSRF marķieris: pieprasījumus, kas sūtīti tieši uz galapunktu
- Pieprasījumu biežuma ierobežojums: plūdus no viena avota
- Proof-of-work: lētus masveida iesniegumus bez izsekošanas vai mīklām
- Servera puses pārbaudes: visu, kas apiet pārlūkprogrammu
- Mērķtiecīgi roboti to izlaiž; ja tas ir slikti paslēpts, ekrāna lasītāji to nolasa
- Robotus, kas nogaida; bez servera puses paraksta to ir viegli viltot
- Šķērslis ikvienam, piekļūstamības barjeras, bieži no trešās puses; pastāv risināšanas pakalpojumi
- Roboti, kas vispirms ielādē lapu, arī saņem derīgu marķieri
- Surogātpastu, kas izkliedēts pa daudzām IP adresēm
- Apņēmīgu sūtītāju ar skaitļošanas jaudu; nepieciešams JavaScript
- Atsevišķi neko – bet bez tām katrs cits slānis ir tikai dekorācija
Honeypot un laika slazds: neredzami filtri
Honeypot ir papildu lauks, ko cilvēki nekad neredz, piemēram, lauks ar nosaukumu „website”, kas paslēpts ar CSS. Vienkārši roboti aizpilda katru lauku, tāpēc aizpildīts honeypot liecina par automatizāciju, un serveris var klusi atmest ziņojumu. Roboti, kas rakstīti tieši jūsu vietnei, vai roboti, kas renderē lapu kā pārlūkprogramma, to izlaiž. Paslēpiet to pareizi: lauku, kas tikai pārvietots ārpus ekrāna, ekrāna lasītāji var nolasīt, to var sasniegt ar tabulēšanas taustiņu vai aizpildīt ar automātisko aizpildi. Izmantojiet aria-hidden, tabindex -1 un autocomplete off, kā arī neitrālu etiķeti, kas lūdz ikvienu, kurš tur nonāk, atstāt lauku tukšu.
Laika slazds reģistrē, kad forma tika piegādāta, un noraida iesniegumus, kas pienāk neticami ātri. Cilvēkiem vajag dažas sekundes, lai izlasītu un ierakstītu; daudzi skripti sūta sekundes daļas laikā. Laikspiedols jāpārbauda serverī un jāaizsargā pret manipulācijām, piemēram, parakstot to vai glabājot sesijā – vienkāršu slēptu laika lauku robots vienkārši pārraksta. Saglabājiet slieksni zemu, jo automātiskā aizpilde padara ātrus arī īstus cilvēkus. Roboti, kas vienkārši nogaida, tiek cauri: laika slazds ir filtrs, nevis siena.
CAPTCHA: efektīva, bet ne bez maksas
CAPTCHA pieprasa pierādījumu, ka nedarbojas robots – no attēlu mīklām līdz pārbaudēm, kas notiek fonā; izplatīti pakalpojumi ir reCAPTCHA, hCaptcha, Cloudflare Turnstile un Friendly Captcha. Tā aptur lielāko daļu vispārējās automatizācijas, tāpēc tā ir tik populāra. Taču katra redzama mīkla ir šķērslis, pie kura daļa apmeklētāju padodas, un lielākā daļa pakalpojumu ielādē trešās puses skriptu, kas rada jautājumus par privātumu un piekrišanu. CAPTCHA arī palīdz tikai tad, ja tā ir pareizi iestatīta: publiska testa vietnes atslēga, logrīks bez skripta vai marķieris, ko serveris nekad nepārbauda, izskatās pēc aizsardzības, bet tā nav. Bezmaksas pārbaude vietnē formexposed.com no ārpuses norāda uz šādām kļūdām.
Piekļūstamība ir daļa no šīs cenas. Attēlu mīklas izslēdz neredzīgos un daudzus vājredzīgos cilvēkus, audio alternatīvas nepalīdz kurlneredzīgajiem, un sarežģīti loģikas uzdevumi apgrūtina cilvēkus ar kognitīviem traucējumiem. WCAG 2.2 veiksmes kritērijs 1.1.1 prasa teksta alternatīvu, kas apraksta CAPTCHA mērķi, un alternatīvas formas dažādām maņām. Fona pārbaudes no lielākās daļas no tā izvairās, taču, kad tām rodas aizdomas, rezerves variants bieži atkal ir vizuāla mīkla – pārbaudiet šo ceļu ar tastatūru un ekrāna lasītāju.
CSRF marķieris: aizsardzība pret viltošanu, nevis pret surogātpastu
CSRF marķieris ir nejauša vērtība, ko serveris ievieto formā un sagaida atpakaļ. Tas tika izstrādāts pret starpvietņu pieprasījumu viltošanu, kad cita vietne liek apmeklētāja pārlūkprogrammai nosūtīt pieprasījumu, ko apmeklētājs nekad nav vēlējies. Publiskā saziņas formā tam ir blakusefekts: roboti, kas sūta datus tieši uz formas adresi, neielādējot lapu, tiek noraidīti. Jebkurš robots, kas ielādē lapu un nosūta marķieri atpakaļ, tiek cauri. Lielākā daļa ietvaru un formu spraudņu CSRF marķierus tik un tā ietver – atstājiet tos ieslēgtus, bet neuzskatiet tos par aizsardzību pret surogātpastu.
Kam jānotiek serverī
- Validējiet katru lauku vēlreiz serverī: obligātos laukus, garumu, e-pasta formātu un to, vai laukos, kas nonāk e-pasta galvenēs, nav rindiņu pārtraukumu.
- Pārbaudiet CAPTCHA un proof-of-work marķierus katrā iesniegumā – pie izsniedzējpakalpojuma vai savā kodā – un noraidiet atkārtoti izmantotus marķierus.
- Ierobežojiet iesniegumu skaitu katrai IP adresei un laika logam. Tas aptur plūdus no viena avota; surogātpastam, kas izkliedēts pa daudzām adresēm, vajadzīgi citi slāņi.
- Apsveriet proof-of-work: pirms nosūtīšanas pārlūkprogramma atrisina nelielu skaitļošanas uzdevumu. Apmeklētāji neredz nekādu mīklu un nekas netiek izsekots, bet masveida iesniegšana kļūst dārga.
Saprātīga kombinācija: divi vai trīs slāņi
- 1Sāciet ar neredzamajiem slāņiem: piekļūstamu honeypot un parakstītu laika slazdu, kas abi tiek pārbaudīti serverī.
- 2Pievienojiet pieprasījumu biežuma ierobežojumu katrai IP adresei, lai viens avots nevarētu pārpludināt formu.
- 3Ja mērķtiecīgs surogātpasts joprojām tiek cauri, pievienojiet proof-of-work vai CAPTCHA – vēlams tādu, kurai nav redzamas mīklas un ir piekļūstama alternatīva.
- 4Saglabājiet CSRF marķieri, ko nodrošina jūsu ietvars – kā bonusu, nevis kā aizsardzību.
- 5Pārbaudiet rezultātu kā apmeklētājs – tikai ar tastatūru, ar ekrāna lasītāju, tālrunī – un pārliecinieties, ka īsti ziņojumi joprojām pienāk.
Daudzās vietnēs honeypot, laika slazds un pieprasījumu biežuma ierobežojums kopā jau novērš lielāko daļu vispārējā surogātpasta bez jebkāda redzama šķēršļa; CAPTCHA ir rezerve gadījumiem, kad ar to nepietiek. WordPress vidē bezmaksas formexposed spraudnis apvieno honeypot, laika pārbaudi un proof-of-work, neizmantojot Google. Lai redzētu, ko jūsu forma rāda no ārpuses – kuri slāņi ir ieviesti, vai CAPTCHA ir efektīvi konfigurēta –, bezmaksas pārbaudei vietnē formexposed.com vajag tikai domēnu, bez konta. Tā neredz jūsu servera kodu, tāpēc servera puses daļa paliek jūsu ziņā.