Direct naar de inhoud

Handboek HTML5 en CSS3HTML en CSS van <a> tot z-index

Stop misbruik van je contactformulier [update]

/ update

Toegevoegd: extra test in PHP-script.

Aan het begin van elke dag liep ik met een plastic zakje om mijn hand door mijn mailbox om alle poep van de spambots op te ruimen. Dat was ik allang zat, maar een hek om mijn mailveldje plaatsen, daar kwam het niet van. Tot ik toevallig iets las over verborgen invoervelden, honingpotten en invultijden. Dat werkt. Ik heb al een week met blote handen in mijn inbox kunnen graaien.

Als je na het invullen van mijn contactformulier op verzenden klikt, wordt het verwerkt door een eenvoudig PHP-script. Dat haalt alle velden op, filtert de kwaadaardige code eruit en stuurt vervolgens jouw bericht naar mijn e-mailadres. Helaas zijn spambots dol op contactformulieren. In razend tempo vullen ze elk veld in dat ze tegenkomen en sturen het de wijde wereld in.

In de vorige zin staan de twee eigenschappen waarmee je de spambot ontmaskert: razend tempo en elk veld.

Aan het formulier heb ik twee extra invoervelden toegevoegd. Het eerste veld is verborgen met type="hidden" en kan niet worden ingevuld dankzij het attribuut readonly. Dat veld krijgt met JavaScript een tijdstempel van het moment waarop de formulierpagina wordt geopend. Het tweede veld is ook verborgen voor menselijke ogen, maar de spambot kan het wel invullen; en doet dat ook.

Ik heb het PHP-mailscript uitgebreid met twee drie tests:

  • Hoe laat is het nu? Is dat minder dan 5 seconden later dan het moment waarop het formulier werd geopend?
  • Is het verborgen veld ingevuld?
  • Is het tijdstempel niet leeg? Blijkbaar vullen (sommige) bots het formulier in zonder dat het wordt geopend.

Als het antwoord op een van beide de vragen ja is, wordt het formulier niet verzonden. Geen mens kan binnen 5 seconden het formulier invullen. Kun jij dat wel, dan hierbij excuus dat je nooit iets van me hoort, maar ik zou je toch niet kunnen bijhouden.

Let op, dit is geen compleet spamfilter. Je houdt hiermee alleen de spam tegen die via je contactformulier wordt verstuurd.

Deze antispamtechniek is niet nieuw. Ik had er gewoon nog nooit iets over gelezen. Misschien heb jij er ook iets aan.

Tags:


Reageer op dit artikel

* Vul a.u.b. alle velden in.