Gids · 5 min. leestijd
Spam blokkeren op een openbaar formulier
Bijgewerkt 2026-09-17
Samengevat
Combineer een controle die bots filtert zonder puzzel voor mensen, rate limiting dat de verzendsnelheid vanaf één bron begrenst, en verplichte velden die blinde geautomatiseerde inzendingen bemoeilijken.
Elk formulier met een openbare link trekt uiteindelijk bots aan, niet omdat het populair is, maar omdat bots naar elke gevonden formulier-URL sturen, geautomatiseerd en niet gericht. De oplossing is niet om mensen te dwingen te bewijzen dat ze mens zijn met een omslachtige puzzel, het is een gelaagde aanpak: een lichte controle die voor de meeste mensen onzichtbaar draait, een limiet op de verzendsnelheid vanaf één bron, en validatie die een blind gescript verzoek makkelijker laat mislukken. Deze gids behandelt wat echt werkt en wat je moet vermijden.
Onzichtbare antispamcontrole
Moderne antispamdiensten voeren een controle op de achtergrond uit, waarbij browsersignalen en gedrag worden bekeken, en tonen alleen een zichtbare puzzel aan verkeer dat verdacht lijkt. De meeste echte bezoekers zien helemaal niets, en dat is precies het punt: antispamfiltering die wrijving toevoegt voor legitieme respondenten ruilt gewoon het ene probleem voor het andere in.
Dit is een veel beter compromis dan een ouderwetse CAPTCHA die elke inzending onderbreekt, omdat het alleen een bevestiging vraagt aan verkeer dat echt geautomatiseerd lijkt.
Rate limiting
Rate limiting begrenst het aantal inzendingen dat vanaf één bron binnen een bepaald venster kan komen, wat het meest voorkomende botpatroon afzwakt: een script dat hetzelfde formulier zo snel mogelijk herhaaldelijk verstuurt. Het vereist niet dat de bot vooraf verdacht lijkt, het stopt simpelweg het volume.
Rate limits moeten ruim genoeg zijn zodat een echt persoon die een formulier een paar keer invult (bij het testen, of een gezin dat apart verstuurt vanaf dezelfde verbinding) er nooit iets van merkt, en strikt genoeg zodat een gescripte stroom snel wordt afgekapt.
Verplichte velden als filter
De velden die je echt nodig hebt als verplicht markeren speelt een dubbele rol: het houdt je responsdata bruikbaar, en het verhoogt de lat voor een bot die blind verstuurt zonder de structuur van het formulier te inspecteren. Een inzending waar verplichte data ontbreekt, wordt al afgewezen voordat die je responslijst bereikt.
Dit is geen primaire verdediging op zichzelf, maar in combinatie met een controle en rate limiting sluit het de deur voor de grofste gescripte inzendingen die niet de moeite nemen om echte inhoud in te vullen.
Wat je moet vermijden
Weersta de verleiding om aan elk formulier een zichtbare beveiligingsvraag of een voor de hand liggende rekenpuzzel toe te voegen, dat filtert onverfijnde bots maar frustreert ook echte respondenten, en een vastberaden botoperator past zich daar toch aan aan. Een achtergrondcontrole die alleen escaleert bij verdacht verkeer bereikt hetzelfde filterresultaat zonder die belasting voor echte mensen.
Weersta ook de neiging om een formulier achter een wachtwoord te vergrendelen om spam te stoppen. Wachtwoorden dienen om te beperken wie het formulier kan zien, niet tegen spam, gebruik ze wanneer je de toegang echt tot een bekende groep wilt beperken, niet als antibotmaatregel voor een openbaar formulier.
Hoe YeetForm dit aanpakt
In YeetForm worden inzendingen van openbare formulieren gecontroleerd via Cloudflare Turnstile (een controle op de achtergrond, geen zichtbare puzzel voor de meeste bezoekers) en serverside rate-limited, naast de velden die je als verplicht hebt gemarkeerd. Turnstile schakelt zichzelf automatisch uit in lokale ontwikkeling of in elke omgeving waar het niet is geconfigureerd, zodat testen niet wordt geblokkeerd.