Magazine High tech

Protection de formulaire contre le spam

Publié le 22 juin 2008 par Jpfox

Parfois, on cherche des solutions très compliquées pour résoudre certains problèmes.

J'ai mis en place, il y a quelques temps, un système pour protéger un formulaire contre le spam. N'ayant pas accès au code traitant le formulaire, mais uniquement au formulaire lui même, j'ai dû trouver une astuce autre que l'utilisation de captcha. C'est habituellement ce que je mets en oeuvre pour lutter contre ce fléau.

Si on réfléchit un peu à la méthode employée par les bots spammeur, on imagine que ceux ci scrutent le code html de la page à la recherche d'un formulaire, récupèrent le nom des champs et l'adresse de validation du formulaire afin de générer automatiquement une commande POST sur cette dernière.

Une idée est de ne pas fournir une adresse de validation du formulaire correcte afin de tromper le bot. C'est cette idée que j'ai mise en oeuvre.

On place une adresse de validation bidon dans le tag <FORM> et on la corrige par javascript juste avant la soumission du formulaire.

Voici un exemple de code :

[xml]
<script type="text/javascript">
<!--
function correcturl()
{
  var formobj = document.getElementById("formid");
  if(obj)
    formobj.action="/vrai/adresse/de/validation/du/formulaire.php";
  return true;
}
//-->
</script>

<form action="http://www.adresse.bidon.com/pour/tromper/le/bot/" 
  method="post" id="formid" onsubmit="return correcturl();">
Nom : <input name="nom" />
</br/>
Prénom : <input name="prenom" />
</br/>
<textarea name="commentaire" cols="35" rows="7"></textarea>
</br/>
<input type="submit" />
</form>

Certes, l'utilisation de cette méthode sur un site à fort trafique poussera les spammeurs à développer un bot spécifique au site, mais pour le site d'une petite entreprise ou d'un particulier, cela fonctionne très bien.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Jpfox Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte