blog placeholder

Dit artikel is voornamelijk bedoeld voor programmeurs en beschrijft een aantal manieren om een contactformulier te beveiligen tegen spam. Ook kan het leerzaam zijn voor de niet-programmeur natuurlijk!

Oke, we hebben in dit voorbeeld een contactformulier met 3 velden. 

  • Naam
  • E-mail
  • Bericht
We willen natuurlijk niet dat bots een nieuw formulier vinden om vol te spammen en daarom gaan we een aantal manieren bij langs die kunnen detecteren of we te maken hebben met een bot.

E-mail adres controleren

Een van de manieren om te controleren of we te maken hebben met een spambot is het email adres controleren. ‘blablabla12345’ is bijvoorbeeld geen geldig e-mail adres! In bijna alle talen is het mogelijk om te controleren of het email adres aan de juiste eisen voldoet.

In PHP gaat dat bijvoorbeeld als volgt:

$email "informatie@uwdomeinnaam.nl"

if(
eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$"$email)) { 
  echo 
"Het email adres is geldig."

else { 
  echo 
"Het email adres is ongeldig."
}

In principe controleer het script hier of het email adres goed is opgebouwd. Het script controleert niet of het email adres daadwerkelijk in gebruik is.

Verborgen bericht

Een andere manier om spam tegen te gaan is door een verborgen veld in het formulier te plaatsen met de naam “message”. Het daadwerkelijke bericht van de gebruiker noem je dan bijvoorbeeld “bericht”.

Je kan nagaan dat als het veld “message” een waarde bevat, dat we niet te maken hebben met een standaard pageview. Voor de veiligheid kan je dus elk verzoek negeren als dat verborgen veld een waarde heeft.

Checkbox & Captcha

Een checkbox (vinkje) waarin je de gebruiker verplicht in te stemmen met de Algemene Voorwaarden is in sommige gevallen genoeg, in de andere gevallen kan je ook kiezen voor een CAPTCHA.

Een CAPTCHA is op verscheidene websites te vinden, de gebruiker wordt verzocht om een reeks letters of getallen in te vullen die in een afbeelding staan afgebeeld. Een computer is niet vaak in staat om een afbeelding te herkennen, vooral niet als de letters zijn gemanipuleerd of bestaan uit verschillende of vreemde lettertypen.

Een CAPTCHA wordt door heel veel bezoekers als uiterst irritant ervaren.

Tijdsinterval (!)

Een goede manier om een formulier te controleren op bots is door een hidden

field aan te maken met daarin het exacte tijdstip waarop de gebruiker de pagina laadt. Als het bericht vervolgens verzonden wordt dan kan je het verschil tussen de twee momenten nagaan.

Je kan dan stellen dat als een gebruiker er minder dan 3.00 seconden over doet om het formulier in te vullen, we te maken hebben met een spambot of met iemand die het contactformulier op zijn eigen manier ‘uitprobeert’.

3 seconden is de perfecte tijd om op te controleren. Een bot met een vertraging vanwege langzaam internet is in minder dan 3 seconden doorverwezen en niemand typt een naam, email adres en uitgebreide vraag in 3 seconden.

Tot slot

Ik hoop dat iemand dit artikel als nuttig heeft ervaren, een contactformulier dat voldoet aan de bovenstaande dingen is volledig beschermd tegen spam.