Hoe voorkom ik spam via mijn contactformulier in WordPress zonder CAPTCHA?
Door Eureka Studio · Bijgewerkt op
Kort antwoord
Combineer onzichtbare controles in plaats van een CAPTCHA: een verborgen honeypotveld dat alleen bots invullen, een minimale invultijd, een token dat paginacaching overleeft, en limieten per IP en per e-mailadres. Zet twijfelgevallen in quarantaine in plaats van ze te verwijderen. Een lokale WordPress-plugin kan dit doen voor Elementor, Contact Form 7 en WPForms zonder gegevens ergens anders heen te sturen. In Hushfort hoort bescherming van formulierplugins bij Pro; de gratis plugin dekt alleen reacties en beoordelingen.
Stappen
1Stap 1
Kijk hoe bots je formulier bestoken
Bots vullen elk veld in dat ze vinden, ook een verborgen veld dat een mens nooit ziet, of posten zonder de pagina zelfs maar te laden. De log van Hushfort benoemt elk geval: honeypot ingevuld, geen token, te snel ingevuld, te veel links.
2Stap 2
Schakel Spamschild in Monitormodus in
Open Spamschild in Hushfort, schakel het in en zet Modus op "Alleen loggen: Monitormodus, blokkeert niets". Is Hushfort Pro geïnstalleerd, laat Formulierplugins dan aan staan en sla op. Het legt vast wat het zou blokkeren, zonder al iets te blokkeren.

3Stap 3
Stel de stille limieten in (Pro)
Hou de Minimale invultijd kort (3 seconden). Met Pro beperk je daarnaast hoeveel berichten één IP (Limiet per IP) of één e-mailadres (Limiet per e-mailadres) per uur kan sturen. Berichten met meer links dan het Maximaal aantal links gaan in quarantaine.
4Stap 4
Bekijk de log en schakel dan over naar Blokkeren
Kijk na een paar dagen wat de Monitormodus heeft opgevangen. Zitten er geen echte berichten tussen, zet Modus dan op "Blokkeren (aanbevolen)" en sla op.

5Stap 5
Echte mensen versturen gewoon
Een bezoeker typt een halve minuut, ziet het verborgen veld nooit en verstuurt. Geen puzzels, geen rasters met afbeeldingen.

Waarom het ertoe doet
Formulierspam is vooral vervelend, tot het meer wordt dan dat. Het begraaft echte aanvragen, leert je je inbox vluchtig door te nemen, en kan de verzendreputatie van je mailserver omlaag halen als je formulier automatische antwoorden stuurt. Op drukke sites kost het ook servertijd, omdat elke inzending de volledige verwerking van de formulierplugin doorloopt.
De gebruikelijke oplossing, een CAPTCHA, legt de kosten bij je bezoekers. Zij lossen puzzels op, sommigen haken af, en wie privacytools gebruikt, loopt vast. De meeste CAPTCHA-diensten laden ook code van derden en sturen bezoekersgegevens van je server weg.
Het kan rustiger. Bots gedragen zich anders dan mensen, op manieren die je ongemerkt kunt controleren:
- Ze vullen verborgen velden in. Een honeypot is een veld dat voor mensen verborgen is, maar wel in de HTML staat. Een mens laat het leeg; een bot vult het in.
- Ze zijn snel. Een mens heeft een paar seconden nodig om een formulier in te vullen. Een bot milliseconden.
- Ze herhalen zich. Eén IP of één e-mailadres dat tien berichten per uur stuurt, is geen klant.
- Ze plakken links. Een bericht vol links is zelden een echte aanvraag.
Veelgemaakte fouten
- Blokkeren in plaats van in quarantaine zetten. Twijfelt een controle, bewaar het bericht dan voor beoordeling. De vraag van een echte klant verwijderen is erger dan één spambericht lezen.
- Meteen naar Blokkeren gaan. Begin een paar dagen in een modus die alleen logt. Kijk wat er geblokkeerd zou zijn voordat je het laat blokkeren.
- Tokens die stukgaan door caching. Zit je antispamtoken in een gecachte pagina, dan delen alle bezoekers één verlopen token. Gebruik bescherming die het token ophaalt bij het laden van de pagina.
- Maar één controle. Een honeypot alleen houdt de simpele bots tegen. Voeg een invultijdcontrole en limieten toe.
Zonder plugin
De meeste formulierplugins hebben hier een basisversie van ingebouwd:
- Elementor Pro-formulieren: voeg een veld "Honeypot" toe uit de lijst met velden.
- Contact Form 7: voeg een honeypot toe via een add-on; CF7 ondersteunt ook Akismet als je accepteert dat er gegevens naar die dienst gaan.
- WPForms: heeft een ingebouwd antispamtoken en een optionele honeypot in de instellingen van elk formulier.
Je kunt ook met de hand een eenvoudige honeypot toevoegen aan elk formulier dat je zelf beheert:
<div style="position:absolute;left:-9999px" aria-hidden="true">
<label>Leave this empty <input type="text" name="website" tabindex="-1" autocomplete="off"></label>
</div>
<?php
if ( ! empty( $_POST['website'] ) ) {
wp_die( 'Spam detected.', 403 );
}
De beperkingen: elke formulierplugin doet het anders, er is meestal geen gedeelde snelheidslimiet over formulieren heen, geen quarantaine om fouten op te vangen, en niets voor reacties of beoordelingen. Je stelt uiteindelijk vijf keer hetzelfde idee in.
Als er iets misgaat
- Echte berichten komen niet meer binnen. Zet Spamschild in Monitormodus, stuur een test en kijk in de log welke controle het tegenhield.
- Formulieren mislukken alleen bij sommige bezoekers. Leeg je paginacache één keer na het inschakelen van de bescherming.
- Er komt nog steeds spam door. Verlaag de linklimiet, voeg woorden of domeinen toe aan de blokkeerlijst, of zet de strikte modus aan voor formulieren die alleen bekende e-mailproviders horen te accepteren.
Met Hushfort
Het Spamschild beschermt in Hushfort Security, de gratis WordPress-beveiligingsplugin, reacties en WooCommerce-beoordelingen. Voor formulierplugins heb je Hushfort Pro nodig; dat voegt zes populaire toe (Elementor Pro, Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Forminator), in hetzelfde scherm.
- Onzichtbare honeypot, minimale invultijd en ondertekende tokens die paginacaching overleven. Het token komt van een piepklein script van ongeveer 2 KB, zonder cookies.
- Pro: standaard limieten per IP (5 per uur) en per e-mailadres (3 per uur); berichten met meer dan 2 links gaan in quarantaine.
- Pro: een lijst met ongeveer 9.900 domeinen voor wegwerp-e-mailadressen, je eigen blokkeerlijsten en woordfilters.
- Pro: quarantaine die leert van "Geen spam".
- Een Monitormodus, zodat je ziet wat het zou blokkeren voordat het blokkeert.
Geen CAPTCHA, geen externe API, en er verlaten nooit formuliergegevens je server.
Veelgestelde vragen
Houden honeypots formulierspam echt tegen?
Waarom reCAPTCHA vermijden?
Werkt dit met paginacaching?
Welke formulierplugins worden ondersteund?
Wat gebeurt er met een bericht dat op spam lijkt maar echt kan zijn?
Gerelateerde handleidingen
Hoe schakel ik reacties uit in WordPress, of hoe stop ik reactiespam?
Schakel reacties in WordPress overal uit, of laat ze open en stop spamreacties. Aparte regels voor berichten en productreviews, geen pingbacks of CAPTCHA.
Bekijk de stappenHoe stop ik registratiespam en nepaccounts in WordPress?
Stop registratiespam in WordPress en WooCommerce: limieten per uur, een plafond voor de hele site en onzichtbare honeypots, zonder afrekenen te blokkeren.
Bekijk de stappenHoe herken en blokkeer ik verkeer van nep-Googlebots in WordPress?
Nep-Googlebots vertragen WordPress. Herken echte crawlers aan hun IP, blokkeer nepbots, geef elk IP een verzoekbudget en laat het afrekenen altijd door.
Bekijk de stappen

