Kijk naar de inzendingen van elk onbeveiligd formulier en je ziet steeds hetzelfde: tientallen spamberichten, valse leads, kwaadaardige links en onzin. Dat komt niet van mensen die je formulier met de hand invullen. Het zijn geautomatiseerde scripts die door aanvallers en spammers worden aangestuurd. Formulierspam en botinzendingen voorkomen stopt deze aanvallen voordat ze je tijd verspillen of je gegevens schaden.
Spam is meer dan een ergernis. Het vervuilt je database, vertekent je analytics, vult je inbox en kan echte beveiligingsrisico's maskeren. Effectieve botpreventie beschermt je formulier en houdt je gegevens schoon.
Wat je leert: hoe geautomatiseerde bots formulieren aanvallen, waarom eenvoudige beveiligingen niet genoeg zijn, welke methoden tegen bots het best werken en hoe je ze invoert zonder echte bezoekers te irriteren.
Hoe botaanvallen op formulieren werken
Een bot (kort voor robot) is een geautomatiseerd programma dat herhalende taken uitvoert. Bots die formulieren aanvallen, doen dingen als:
- Automatisch elk veld vullen met willekeurige tekst
- Het formulier duizenden keren per dag versturen
- Links of advertenties in formuliervelden zetten
- Testen op beveiligingslekken door het formulier af te tasten
- E-mailadressen oogsten om aan spammailinglijsten toe te voegen
Anders dan een hacker die één specifiek formulier kan uitkiezen, vallen bots duizenden formulieren tegelijk aan. Ze scannen het internet op zoek naar formulieren en als ze er een vinden, versturen ze automatisch spam. Je kunt wakker worden met 10.000 valse inzendingen in je inbox.
Waarom formulieren kwetsbaar zijn voor bots
Formulieren accepteren invoer van iedereen
Formulieren staan per ontwerp open voor het internet. Iedereen kan je formulier vinden en versturen. Er is geen eerste controle of de persoon die het verstuurt een echt mens is.
Formulieren zijn voorspelbaar
Als een bot je formulier kan zien in de HTML van een webpagina, kan hij de structuur eruit halen en begrijpen welke velden moeten worden gevuld. Dat maakt formulieren makkelijke doelwitten voor automatisering.
De meeste formulieren hebben geen bescherming
Veel websites publiceren formulieren zonder botdetectie. Bots leren snel deze onbeschermde doelwitten uit te buiten.
Waarom basisbeveiliging niet werkt
Veldnamen van formulieren versluieren
Sommige mensen denken dat het verbergen van de veldnamen bots in verwarring brengt. Maar bots kunnen veldnamen afleiden uit de HTML of door de formulierinzending te analyseren. Dit werkt niet.
Honeypotvelden (nepvelden)
Een honeypotveld is een verborgen formulierveld dat echte bezoekers nooit zien. Bots, die CSS of verborgen attributen niet begrijpen, vullen het toch in. Je kunt inzendingen weigeren waarbij de honeypot is gevuld.
Dit werkt tegen heel simpele bots, maar geavanceerde bots kennen honeypotvelden en weten dat ze die niet moeten invullen. Op zichzelf is het nu een zwakke verdediging.
Simpele rekensommen of vragen
"Hoeveel is 2 + 2?" lijkt iets wat een bot niet kan beantwoorden. Maar moderne AI en OCR (optische tekenherkenning) kunnen simpele rekensommen lezen en oplossen. Deze verdediging is verouderd.
Effectieve methoden tegen bots
CAPTCHA
CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) is de meest gebruikte methode tegen bots. Er zijn verschillende soorten:
CAPTCHA met tekst: gebruikers lossen een puzzel met vervormde tekst op. Ouder en nu minder effectief, omdat AI vervormde tekst kan lezen.
CAPTCHA met afbeeldingen (reCAPTCHA v2): gebruikers klikken op vakjes of herkennen objecten in afbeeldingen. Betrouwbaarder dan tekst, maar nog niet perfect. Dit zie je op veel websites.
Onzichtbare CAPTCHA (reCAPTCHA v3): de gebruiker ziet niets. Het systeem analyseert zijn gedrag (hoe hij de muis beweegt, hoe snel hij het formulier invult) om te bepalen of hij een mens is. Geen frictie voor echte gebruikers, maar vraagt een geavanceerdere backend.
Snelheidsbeperking (rate limiting)
Rate limiting beperkt hoe vaak hetzelfde IP-adres of dezelfde gebruikersaccount een formulier in een bepaalde periode mag versturen. Probeert een aanvaller 1.000 formulieren in 10 minuten te versturen vanaf hetzelfde IP-adres, dan blokkeert rate limiting hem na de eerste 5 inzendingen in 10 minuten.
Rate limiting is onzichtbaar voor echte gebruikers (de meeste mensen versturen hetzelfde formulier niet 20 keer in een uur) maar effectief tegen bots (die herhaald en met bovenmenselijke snelheid versturen).
E-mailverificatie
Vraag bezoekers hun e-mailadres te verifiëren door op een link in een bevestigingsmail te klikken. Bots hebben meestal geen toegang tot inboxen (of gebruiken valse e-mailadressen die niet echt zijn). Dit haalt veel botinzendingen weg.
Nadeel: het geeft extra frictie voor echte bezoekers. Gebruik dit voor formulieren met een hoge waarde (aanmeldingen, accountaanmaak) waar je bereid bent een extra stap toe te voegen.
Gedragsanalyse
Analyseer hoe bezoekers met het formulier omgaan:
- Vulden ze het formulier met bovenmenselijke snelheid in (alle velden in 0,5 seconde)? Waarschijnlijk een bot.
- Hebben ze nooit een veld geselecteerd (alleen doorgetabd zonder te typen)? Waarschijnlijk een bot.
- Vulden ze een veld in, wisten ze het, vulden ze het opnieuw in en wisten ze het weer? Waarschijnlijk een mens.
Hiervoor is JavaScript op het formulier nodig om gebruikersinteracties bij te houden. Het is onzichtbaar voor echte gebruikers en effectief tegen simpele bots.
Apparaatvingerafdruk (device fingerprinting)
Analyseer kenmerken van het apparaat dat het formulier verstuurt (browsertype, besturingssysteem, schermresolutie, tijdzone, enzovoort). Bots hebben vaak ongewone of inconsistente apparaatvingerafdrukken. Echte apparaten hebben patronen die menselijk aandoen.
Dit is geavanceerd en vraagt diensten van derden, maar het is zeer effectief.
Wanneer je welke methode gebruikt
Voor een eenvoudig contactformulier
Gebruik rate limiting (onzichtbaar) plus een CAPTCHA als je veel spam krijgt. E-mailverificatie is optioneel.
Voor een aanmeldformulier voor een nieuwsbrief
Gebruik rate limiting plus e-mailverificatie. Zo weet je dat het e-mailadres echt is en voorkom je massale aanmeldingen met valse adressen.
Voor een formulier met hoge waarde (accountaanmaak, betaling, enzovoort)
Gebruik meerdere lagen: rate limiting, CAPTCHA, e-mailverificatie. Overweeg gedragsanalyse voor extra zekerheid.
Voor een API-eindpunt of programmatische toegang
Gebruik API-authenticatie (tokens of API-sleutels) in plaats van CAPTCHA. CAPTCHA werkt niet voor API's. Rate limiting is essentieel.
De impact van botpreventie op de gebruikerservaring
Sterke botpreventie kan frictie geven voor echte gebruikers. Zoek een balans tussen beveiliging en gebruiksgemak:
CAPTCHA: kost een paar seconden en één extra stap. Zichtbaar en een beetje irritant, maar breed geaccepteerd door gebruikers. Veel mensen verwachten het.
E-mailverificatie: de gebruiker moet zijn e-mail checken en op een link klikken. Meer frictie, maar nodig voor acties met een hoge waarde.
Gedragsanalyse of rate limiting: onzichtbaar. Helemaal geen frictie voor echte gebruikers.
Best practice: gebruik eerst onzichtbare methoden (rate limiting, gedragsanalyse). Toon alleen een CAPTCHA als de formulierinzending verdacht lijkt. Zo zien 95% van de echte gebruikers nooit een CAPTCHA, maar bots bijna altijd wel.
Formulierinzendingen controleren op spam
Ook met botpreventie kan er wat spam doorheen glippen. Houd je inzendingen in de gaten:
- Bekijk nieuwe inzendingen regelmatig op duidelijke spampatronen
- Zoek naar inzendingen met onzintekst of links
- Volg het aantal inzendingen (als dat plotseling piekt, word je misschien aangevallen)
- Kijk uit welke landen inzendingen komen (bedien je alleen de VS, dan kunnen inzendingen uit bepaalde landen verdacht zijn)
De meeste formulieren laten je inzendingen als spam markeren. Gebruik dit om machine-learningmodellen te trainen die toekomstige spam kunnen helpen voorkomen.
Wat WEMASY doet tegen spam
WEMASY-formulieren hebben standaard botpreventie. Elk formulier heeft rate limiting (meerdere inzendingen vanaf hetzelfde IP-adres worden afgeremd) en optionele CAPTCHA-bescherming (reCAPTCHA v3). Je kunt e-mailverificatie inschakelen voor formulieren die dat nodig hebben. WEMASY let ook op spampatronen in inzendingen en markeert verdachte inzendingen.
Alle formulieren hebben spambescherming. Geavanceerdere bescherming is beschikbaar in hogere abonnementen. Bekijk de details van je abonnement op de prijspagina.