Ako zabezpečiť webstránku proti spamu z formulárov a škodlivým botom
Ak vám cez kontaktný formulár začali chodiť nezmyselné správy, podozrivé ponuky alebo očividne automaticky generovaný obsah, pravdepodobne máte problém so spamovými botmi. Formuláre sú častým cieľom botov a spam môže rýchlo zahltiť reálne dopyty od zákazníkov. V tomto článku sa preto pozrieme na možnosti, ako formulár efektívne chrániť.
Prečo vám cez kontaktný formulár chodí spam?
Spamu neposielajú ľudia ručne, ale automatizované programy. Bot môže nájsť formulár na webe, vyplniť jeho polia a opakovane ho odosielať. Niektoré automatizované skripty dokonca úplne obídu samotné používateľské rozhranie a posielajú požiadavky priamo na miesto, kde web formulár spracúva.
Preto jednoduchý matematický príklad alebo puzzle na overenie človeka nestačí. Dôležitá je aj kontrola požiadavky pri jej spracovaní na serveri. Práve tam sa môže overiť, či požiadavka prešla anti-bot ochranou a či ju má web vôbec akceptovať.
Ako ochrániť formuláre pred spamom a botmi?
Spôsobov na ochranu proti spamu je niekoľko, či už ide o alternatívy rovnakej technológie alebo iné vrsty ochrany.
Pri miernom spame môže postačovať jednoduché opatrenie, pri intenzívnejšom automatizovanom spame je často vhodné skombinovať viac vrstiev. Rokmi overená prax hovorí, že spoliehať sa na jediný ochranný mechanizmus nie je postačujúce. Boti sa neustále vyvíjajú a s ním musí aj ochrana – ideálne automaticky.
1. Google reCAPTCHA
Google reCAPTCHA rozlišuje legitímneho návštevníka od bota. Keď detekuje automatizovanú aktivitu, označí návštevu za rizikovú.
Nemusí pritom vždy znamenať známe úlohy s vyberaním obrázkov áut alebo semaforov. Napríklad reCAPTCHA v3 funguje bez klasického testu a jednotlivým interakciám prideľuje skóre podľa toho, aké je riziko, že nejde o človeka, ale bota.
Web potom môže podľa tohto skóre rozhodnúť, ako s akciami užívateľa, ako je napr. aj vyplnenie formulára, vynaloží. Pri tom je dôležitá správna implementácia.
Ochrana nekončí pridaním reCAPTCHA do viditeľnej časti formulára. Po jeho vyplnení reCAPTCHA vygeneruje tzv. token, ktorý musí web overiť aj na serverovej strane. Web je potom chránený dvoma spôsobmi:
- Detekovanie botov v prehliadači, ktoré dá každému návštevníkovi skóre, podľa podozrenia, že ide o automatizovanú aktivitu.
- Overenie spracovania požiadavky na serveri, ktoré zistí, či užívateľ naozaj vyplnil formulár a overí jeho skóre. Takto sa dá zabrániť obchádzaniu užívateľského rozhrania, ktoré boti zvyknú využívať.
2. Cloudflare Turnstile
Cloudflare Turnstile je alternatívne riešenie, ktoré môžete použiť na ochranu formulárov pred automatizovaným odosielaním, čiže spamom.
Je navrhnuté ako alternatíva pre riešenie klasických CAPTCHA úloh. Niekedy je ale dobré vyžadovať interakciu od užívateľa pre overenie, či ide o bota. V tzv. režime Managed môže Cloudflare podľa situácie používateľovi zobraziť jednoduchý checkbox alebo nezobraziť nič.
Toto je odporúčané nastavenie, ktoré je ale možné zmeniť, ak by ste chceli nechať celú ochranu skrytú a nechcete, aby sa checkbox (aj keď bez puzzle) mohol zobraziť istej časti užívateľov.
Rovnako ako pri reCAPTCHA je však dôležitá aj serverová časť ochrany. Podobne ako pri jeho vyššie spomínanej alternatíve, aj Turnstile odosiela token, ktorý by sa mal na serveri overiť. Ak by ste serverovú ochranu vynechali, implementácia nemá zmysel, pretože bot dokáže ochranný mechanizmus obísť.
3. Honeypot
Honeypot je jednoduchšia ochrana, ktorá môže fungovať úplne bez zásahu používateľa. Do formulára sa pridá pole určené iba na odhalenie botov, napríklad skryté pole „testingBot“. Bežný návštevník ho nevidí, a preto ho nechá prázdne. Jednoduchý bot, ktorý automaticky vypĺňa všetky dostupné polia, ho však môže vyplniť. Web potom takúto správu vyhodnotí ako podozrivú a zahodí ju.
Výhodou honeypotu je, že legitímneho návštevníka nijako nezdržuje. Nemal by sa však považovať za jedinú ochranu formulára, pretože sofistikovanejší boti dokážu podobné pasce veľmi ľahko rozpoznať.
Väčší zmysel preto dáva ako nenápadná doplnková vrstva k ďalším opatreniam, ktorá je skôr voliteľná a stále menej účinná.
4. Rate limiting
Rate limiting obmedzuje, koľkokrát môže určitý návštevník odoslať formulár za stanovený čas. Ak napríklad z jednej IP adresy prídu desiatky alebo stovky odoslaní v krátkom intervale, ďalšie odosielania môže web dočasne zablokovať. Obmedzenie sa dá aplikovať aj priamo URL, ktorá slúži na komunikáciu so serverom a spracovanie formulára.
Rate limiting je užitočný najmä proti botom, ktoré sa snažia formulár odosielať vo veľkom množstve. Je to jeden zo základných mechanizmov ochrany pred príliš častým automatizovaným žiadosťiam botov vykonať nejakú akciu – napr. odoslať formulár.
Nie je to ale kompletné riešenie na spam. Raz, dvakrát alebo trikrát ho takýto ochranný mechanizmus pustí, kým ho zablokuje. Ide teda skôr o ochranu, ktorá má dopĺňať reCAPTCHA alebo Turnstile. Myšlienka je, že ak by oni náhodou zlyhali, máte istotu, že bot nebude mať toľko úspešných pokusov, aby vám zaspamoval celú emailovú schránku.
Ako vyriešiť spam raz a navždy?
Základná ochrana musí začať s reCAPTCHA alebo Cloudflare Turnstile. Ak je prioritou čo najplynulejší používateľský zážitok, vhodné sú riešenia, ktoré nemusia používateľovi zobrazovať klasickú obrázkovú CAPTCHA, napríklad reCAPTCHA v3 alebo vhodný režim Turnstile.
Pri jednoduchom automatizovanom spame môže pomôcť honeypot, ideálne aj ako doplnková ochrana.
Ak formulár čelí veľkému množstvu opakovaných odoslaní, oplatí sa pridať aj rate limiting. Ak spam pokračuje napriek existujúcej ochrane, odporúčame kombinovať viac mechanizmov namiesto spoliehania sa iba na jeden. Takýto vrstvený prístup je spravidla odolnejší voči rôznym spôsobom automatizovaného zneužitia.
Tip
Nespoliehajte sa iba na jeden spôsob ochrany. Ochranu formulára môžete vrstviť podľa množstva a typu útokov. Dobre nastavená antispamová ochrana nedáva botom priestor ani v jednom kroku.
Záver
Spam z kontaktného formulára sa dá výrazne obmedziť správne nastavenou ochranou proti botom. Pri bežnom webe môžete začať s reCAPTCHA alebo Cloudflare Turnstile a podľa potreby ich doplniť honeypotom či rate limitingom. Ideálna ochrana však pokrýva každú vrstvu.
Ak vám spam stále chodí, skontrolujte, či formulár vôbec používa anti-bot ochranu, aké riešenie je implementované a či sa ochrana overuje aj na serverovej strane. Pri reCAPTCHA aj Turnstile je serverové overenie tokenu dôležitou súčasťou správnej implementácie.
Ak si nie ste istí, či je váš formulár proti spamu chránený správne, radi skontrolujeme jeho zabezpečenie aj existujúcu anti-spam implementáciu a navrhneme vhodné riešenie pre váš web.
Chcem pomôcť s anti-spam ochranou formulárov
Najčastejšie otázky o zabezpečení kontaktných formulárov
Áno. CAPTCHA síce výrazne pomáha, ale sama o sebe nemusí zastaviť všetky typy spamových útokov. Dôležité je CAPTCHU doplniť o serverové overenie a pri opakovanom spame môže pomôcť kombinácia viacerých vrstiev ochrany.
Nie vždy. Napríklad reCAPTCHA v3 môže vyhodnocovať pravdepodobnosť, že ide o bota na pozadí a používateľ nemusí riešiť klasickú obrázkovú úlohu.
Áno. Turnstile je anti-bot riešenie od Cloudflare, ktoré možno použiť aj na ochranu webových formulárov. Podľa režimu a vyhodnoteného rizika môže overenie prebehnúť bez akéhokoľvek zásahu do UX alebo pomocou jednoduchého checkboxu.
Nie. Pri oboch riešeniach je dôležité, aby server overil token vytvorený pri kontrole používateľa. Samotný prvok zakomponovaný vo formulári v prehliadači nemusí predstavovať kompletnú ochranu.
Pri veľmi jednoduchom spame môže honeypot zachytiť časť automatizovaných odoslaní, ale nemal by sa považovať za univerzálnu náhradu anti-bot ochrany. Väčší zmysel má ako nenápadná doplnková vrstva.
Záleží od zvoleného riešenia a jeho nastavenia. Moderné riešenia vedia overovanie vykonávať bez klasických CAPTCHA úloh typu „ste robot?“, takže legitímny návštevník nemusí byť pri každom odoslaní formulára prerušovaný.
Môže výrazne pomôcť najmä vtedy, keď bot odosiela veľké množstvo správ v krátkom čase. Rate limiting obmedzí počet povolených odoslaní za určité obdobie.
Dôvodom je s veľkou pravdepodobnosťou nedostatočná konfigurácia, chýbajúce serverové overenie alebo zvolenie nevhodného typu ochrany. Odporúčame implementovať ochranu na každý krok, ktorý vedie k vyplneniu až po odoslanie formulára.
Určite nie. Anti-bot ochrana sa bežne pridáva k existujúcim formulom. Formuláre musia byť upravené, ale nejde o kompletnú prerábku funkcionality.