Een honeypot in webformulieren is een onzichtbaar invoerveld dat via CSS voor mensen verborgen blijft maar zichtbaar is voor bots die de HTML parsen. Omdat echte gebruikers het veld nooit zien of invullen, wordt elke submit met een ingevulde honeypot afgewezen als spam. De techniek werd rond 2007 populair via antispam-blogs en de WordPress-plugin "Honeypot for Contact Form 7" en is het privacyvriendelijke alternatief voor CAPTCHAs zoals Google reCAPTCHA — geen scripts van derden, geen cookies, geen toegankelijkheidsproblemen, geen conversieverlies.
Hoe werkt een honeypot?
De server voegt een extra veld toe (vaak website, url, email_confirm). Het wordt verborgen via display: none, visibility: hidden, position: absolute; left: -9999px, leeg <label> of tabindex="-1" autocomplete="off". Bots vullen elk veld dat ze vinden — ook de val. Bij submit:
- Veld leeg → mens, verwerken.
- Veld ingevuld → bot, stil weggooien of 200 OK retourneren zonder op te slaan.
Honeypot vs CAPTCHA: wat is beter?
| Criterium | Honeypot | CAPTCHA (reCAPTCHA) |
|---|---|---|
| Gebruikerswrijving | Geen | Middel–hoog |
| Toegankelijkheid (WCAG 2.2) | Conform | Audio-alternatief nodig |
| Privacy / AVG | Geen derde-partij-calls | Google-scripts, toestemming nodig |
| Performance | ~0 KB | ~200 KB JS |
| Botdetectie | ~95 % dom spam | ~99 % incl. slimme bots |
| Conversie-impact | Geen | 3–29 % daling |
Voor de meeste WordPress-sites blokkeert honeypot + tijdscontrole ruim voldoende spam — zonder de juridische en UX-kosten van CAPTCHA.
Hoe voeg ik een honeypot toe aan een WordPress-formulier?
Contact Form 7
Installeer de gratis plugin "Honeypot for Contact Form 7" (1M+ actieve installaties) en voeg [honeypot website] toe.
WPForms / Gravity Forms / Fluent Forms
Alle drie hebben een ingebouwde honeypot-optie — één klik.
Eigen WordPress-formulier
<p style="position:absolute;left:-9999px;" aria-hidden="true">
<label for="website">Laat dit veld leeg</label>
<input type="text" name="website" id="website" tabindex="-1" autocomplete="off">
</p>if ( ! empty( $_POST['website'] ) ) {
wp_die( 'Spam gedetecteerd', 'Fout', array( 'response' => 200 ) );
}Best practices voor honeypots
- Plausibele veldnamen als
website,url,company. - Verbergen via CSS, niet
type="hidden". tabindex="-1"+autocomplete="off".aria-hidden="true"voor schermlezers.- Combineren met tijdscheck — afwijzen onder 2–3 s.
- 200 OK retourneren bij afwijzing.
Wanneer is een honeypot niet genoeg?
Geavanceerde bots die JS uitvoeren en CSS-zichtbaarheid respecteren (Puppeteer / headless Chrome) slaan honeypots over. Voor doelen met hoge waarde (login, betaling, lead-gen met beloning) combineer honeypot + tijd + Cloudflare Turnstile of rate limiting. De andere betekenis van "honeypot" — een opzettelijk kwetsbare server om aanvallers te bestuderen — is een apart cybersecurity-concept.
Wat InspectWP controleert
InspectWP analyseert elk formulier op de gecrawlde pagina en markeert ontbrekende spambescherming op contact- en loginformulieren. Het detecteert ook geladen Google reCAPTCHA-scripts in de AVG-sectie.