Mis vormi tegelikult kaitseb: CAPTCHA, meepott, ajalõks, CSRF
Enamik kontaktivorme tugineb rämpsposti vastu ühele nipile ja paljud neist nippidest peatavad ainult kõige lihtsamad robotid. Mida iga kaitsekiht peatab, mida see maksab ja milline kombinatsioon on mõistlik.
Kontaktivormide kaudu tulev rämpspost pärineb harva inimeselt, kes kirjutab käsitsi. Enamasti on see tarkvara, mis leiab vorme, täidab iga välja ja saadab tulemuse – tuhandeid kordi. Kaitsevahendeid on mitu ja need toimivad väga erinevates kohtades. Teades, mida igaüks neist tegelikult teeb, väldite kahte viga: vormi ilma tõelise kaitseta ja vormi, mida valvatakse nii rangelt, et päris inimesed loobuvad.
- Meepott: lihtsad robotid, mis täidavad iga välja
- Ajalõks: skriptid, mis saadavad kohe pärast laadimist
- CAPTCHA: enamik üldist automatiseerimist
- CSRF-token: otse lõpp-punkti saadetud päringud
- Päringute piiramine: üleujutused ühest allikast
- Töötõend: odavad massilised saatmised, ilma jälgimise ja mõistatusteta
- Serveripoolsed kontrollid: kõik, mis brauserist mööda läheb
- Sihitud robotid jätavad selle vahele; halvasti peidetuna loevad ekraanilugejad selle ette
- Robotid, mis ootavad; ilma serveripoolse allkirjata on seda lihtne võltsida
- Takistus kõigile, ligipääsetavuse tõkked, sageli kolmanda osapoole oma; on olemas lahendamisteenused
- Robotid, mis laadivad esmalt lehe, saavad samuti kehtiva tokeni
- Paljude IP-aadresside vahel jaotatud rämpspost
- Sihikindel saatja, kellel on arvutusvõimsust; vajab JavaScripti
- Üksi mitte midagi – kuid ilma nendeta on iga teine kiht vaid dekoratsioon
Meepott ja ajalõks: nähtamatud filtrid
Meepott on lisaväli, mida inimesed kunagi ei näe, näiteks CSS-iga peidetud väli nimega „website“. Lihtsad robotid täidavad iga välja, seega täidetud meepott annab märku automatiseerimisest ja server võib sõnumi vaikselt kõrvale heita. Teie saidi jaoks kirjutatud robotid või need, mis kuvavad lehte nagu brauser, jätavad selle vahele. Peitke see korralikult: ekraanilt lihtsalt välja nihutatud välja võivad ekraanilugejad ette lugeda, sinna võib jõuda Tab-klahviga või selle võib täita automaatne täitmine. Kasutage atribuute aria-hidden, tabindex -1 ja autocomplete off ning neutraalset silti, mis palub igaühel, kes sinna satub, jätta väli tühjaks.
Ajalõks registreerib, millal vorm edastati, ja lükkab tagasi saatmised, mis saabuvad ebausutavalt kiiresti. Inimesed vajavad lugemiseks ja kirjutamiseks mõnda sekundit; paljud skriptid saadavad sekundi murdosaga. Ajatemplit tuleb kontrollida serveris ja kaitsta võltsimise eest, näiteks allkirjastatult või seansis hoituna – lihtsa peidetud ajavälja kirjutab robot lihtsalt üle. Hoidke lävi madalal, sest automaatne täitmine muudab ka päris inimesed kiireks. Robotid, mis lihtsalt ootavad, pääsevad läbi: ajalõks on filter, mitte müür.
CAPTCHA: tõhus, kuid mitte tasuta
CAPTCHA nõuab tõendit, et tegemist ei ole robotiga – alates pildimõistatustest kuni taustal toimuvate kontrollideni; levinud teenused on reCAPTCHA, hCaptcha, Cloudflare Turnstile ja Friendly Captcha. See peatab enamiku üldisest automatiseerimisest, mistõttu see on nii populaarne. Kuid iga nähtav mõistatus on takistus, mille juures osa külastajaid loobub, ja enamik teenuseid laadib kolmanda osapoole skripti, mis tekitab privaatsus- ja nõusolekuküsimusi. CAPTCHA aitab ka ainult siis, kui see on õigesti seadistatud: avalik testsaidivõti, vidin ilma skriptita või token, mida server kunagi ei kontrolli, näeb välja nagu kaitse, kuid seda ei ole. Tasuta kontroll saidil formexposed.com toob sellised vead väljastpoolt esile.
Ligipääsetavus on osa sellest hinnast. Pildimõistatused tõrjuvad välja pimedad ja paljud vaegnägijad, helialternatiivid ei aita kurtpimedaid ning keerulised loogikaülesanded koormavad kognitiivsete häiretega inimesi. WCAG 2.2 edukriteerium 1.1.1 nõuab CAPTCHA eesmärki kirjeldavat tekstialternatiivi ja alternatiivseid vorme eri meelte jaoks. Taustakontrollid väldivad suuremat osa sellest, kuid kui need muutuvad kahtlustavaks, on varulahendus sageli jälle visuaalne mõistatus – testige seda teed klaviatuuri ja ekraanilugejaga.
CSRF-token: kaitse võltsimise, mitte rämpsposti eest
CSRF-token on juhuslik väärtus, mille server paneb vormi ja ootab tagasi. See loodi saitidevahelise päringu võltsimise vastu, mille puhul teine veebisait paneb külastaja brauseri saatma päringut, mida külastaja kunagi ei kavatsenud. Avaliku kontaktivormi puhul on sellel kõrvalmõju: robotid, mis saadavad andmed otse vormi aadressile lehte laadimata, lükatakse tagasi. Iga robot, mis lehe alla laadib ja tokeni tagasi saadab, pääseb läbi. Enamik raamistikke ja vormipistikprogramme sisaldab CSRF-tokeneid niikuinii – hoidke need sees, kuid ärge lugege neid rämpspostikaitseks.
Mis peab toimuma serveris
- Valideerige iga väli serveris uuesti: kohustuslikud väljad, pikkus, e-posti vorming ja reavahetuste puudumine väljadel, mis satuvad kirja päistesse.
- Kontrollige CAPTCHA ja töötõendi tokeneid iga saatmise puhul väljastava teenuse kaudu või oma koodis ning lükake korduvalt kasutatud tokenid tagasi.
- Piirake saatmisi IP-aadressi ja ajavahemiku kohta. See peatab üleujutused ühest allikast; paljude aadresside vahel jaotatud rämpspost vajab teisi kihte.
- Kaaluge töötõendit: enne saatmist lahendab brauser väikese arvutusülesande. Külastajad ei näe mõistatust ja midagi ei jälgita, kuid massiline saatmine muutub kalliks.
Mõistlik kombinatsioon: kaks või kolm kihti
- 1Alustage nähtamatutest kihtidest: ligipääsetav meepott ja allkirjastatud ajalõks, mõlemad serveris kontrollitud.
- 2Lisage päringute piiramine IP-aadressi kohta, et üksainus allikas ei saaks vormi üle ujutada.
- 3Kui sihitud rämpspost pääseb ikka läbi, lisage töötõend või CAPTCHA – eelistatavalt selline, millel pole nähtavat mõistatust ja millel on ligipääsetav alternatiiv.
- 4Hoidke alles teie raamistiku pakutav CSRF-token – boonusena, mitte kaitsena.
- 5Testige tulemust külastajana – ainult klaviatuuriga, ekraanilugejaga, telefonis – ja kontrollige, et päris sõnumid jõuavad endiselt kohale.
Paljudel saitidel eemaldavad meepott, ajalõks ja päringute piiramine koos juba suurema osa üldisest rämpspostist ilma ühegi nähtava takistuseta; CAPTCHA on varuks juhuks, kui sellest ei piisa. WordPressis ühendab tasuta formexposedi pistikprogramm meepoti, ajakontrolli ja töötõendi ilma Google'it vajamata. Et näha, mida teie vorm väljastpoolt näitab – millised kihid on olemas, kas CAPTCHA on tõhusalt seadistatud –, vajab tasuta kontroll saidil formexposed.com ainult domeeni, mitte kontot. See ei näe teie serveri koodi, seega jääb serveripoolne osa teie ülesandeks.