Important ! Betterliving a déménagé et changé de nom. Nous continuons à proposer nos services sur notre nouveau site www.betterweb.fr. Au plaisir de vous y accueillir.

L'équipe de Betterliving

Dans un article précédent, nous donnions plusieurs raisons de remplacer le formulaire de contact de Joomla! par une version améliorée en utilisant le composant Fabrik. Aujourd'hui, nous ajoutons une nouvelle raison de le faire : lutter contre le spam de robots dans les formulaires.

Pour les clients que nous hébergeons sur notre propres serveurs, nous offrons déjà une protection en filtrant les visites contre les robots spammeurs les plus connus et en utilisant les services du projet Honey Pot et de BotScout. Et cela donne de bons résultats : même sur les sites à fort trafic, le nombre de faux remplissages ne dépasse pas quelques unités par an. Néanmoins, il y a toujours des exceptions et certains scripts arrivent encore à passer entre les mailles du filet.

Dans ce cas, la première réaction des clients est de nous demander d'installer un "CAPTCHA" sur leur formulaire.

« Captcha ». Sous licence Domaine public via Wikimedia Commons - https://commons.wikimedia.org/wiki/File:Captcha.jpg#/media/File:Captcha.jpgSuivant la définition de Wikipédia, le terme CAPTCHA est une marque commerciale de l'université Carnegie-Mellon désignant une famille de tests de Turing permettant de différencier de manière automatisée un utilisateur humain d'un ordinateur. Il s'agit le plus souvent d'images présentant un texte déformé que le visiteur doit reproduire dans un champ prévu à cet effet.

La riposte des robots

Mais les robots sont devenus intelligents et la plupart d'entre eux sont maintenant capables de "lire" ces images aussi bien (ou aussi mal !) que les humains. Les plus performants d'entre eux sont même capables de résoudre les problèmes mathématiques ou autres jeux proposés par les Captchas les plus modernes.

C'est pourquoi nous avons toujours essayé de décourager nos clients d'en installer dans leurs sites, avec l'argument qu'en général ces dispositifs sont une nuisance plus grande pour leurs visiteurs (et peut-être futurs clients) que ne le sont les quelques spams qu'ils reçoivent.

Heureusement, il est maintenant possible de se protéger efficacement sans sacrifier le confort du visiteur, en exploitant la façon dont les robots tentent eux-mêmes de surmonter les obstacles que leur tendent les webmasters.

Une alternative aux Captchas

Une fois qu'on s'est rendu compte que certains robots arrivaient à déchiffer les images destinées à les arrêter, une nouvelle technique s'est développée : introduire dans le formulaire un champ invisible pour le visiteur. Ce champ est masqué en utilisant le CSS ou le Javascript et ne pourra donc pas être rempli par un visiteur humain. Par contre le robot "voit" la page dans un format "texte" dans lequel le CSS est désactivé, ce qui rend visible tous les champs. Il remplira donc celui qui est caché en pensant qu'il s'agit d'un champ comme un autre. Il suffit alors de vérifier, au moment de valider le formulaire, si ce champ est rempli ou non : si c'est le cas, c'est un robot (et les données ne sont pas enregistrées), sinon c'est un visiteur légitime. Mission accomplie !

La deuxième riposte des robots

C'était sans compter sur la faculté d'adaptation des spammeurs. Ayant compris le piège qui les attendaient, les robots ont appris à se méfier des champs cachés et évitent à présent de les remplir !

C'est justement ce comportement que nous allons utiliser pour les débusquer en utilisant le raisonnement inverse : cette fois, si le champ caché est vide, il s'agit d'un robot, sinon c'est un humain.

Fonctionnement du piège

Quand vous créez un nouveau formulaire dans Fabrik, celui-ci génère automatiquement 2 champs cachés : id (indispensable car il s'agit de la clé primaire de la table de la base de données associée au formulaire) et date_time (techniquement facultatif, mais utile). Ce second champ enregistre par défaut la date et l'heure à laquelle les données envoyées par le formulaire ont été enregistrées la première fois. Ce champ est donc toujours rempli au moment où la page contenant le formulaire se charge et cette donnée ne peut être effacée par le visiteur puisqu'il s'agit d'un champ invisible. Les images suivantes montrent comment les visiteurs et les robots voient le même formulaire.

form with_css

 form without_css

Ayant constaté que le champ Date du message est caché et fidèle à son conditionnement, le robot videra ce champ avant de valider le formulaire. Il nous suffit donc d'y ajouter une validation pour vérifier si le champ caché est vide ou non. 

La pratique

  1. Dans l'administration de Joomla!, allez dans Composants > Fabrik > Eléments et repérez l'élément date_time de votre formulaire.
  2. Cliquez sur son nom pour accéder aux réglages
  3. Dans la section Validations, ajoutez une validation de type PHP qui fonctionnera sur Nouveau
  4. Dans la fenêtre Condition, tapez l'instruction PHP return ($data == ''); . Ceci testera si le champ est vide ou pas. Attention au double signe "=" et n'oubliez pas le ";" à la fin.
  5. Dans la fenêtre Code PHP, tapez l'instruction return false;. Ceci indique que, quand la condition au-dessus (donc que le champ est vide) est remplie, la validation du formulaire doit échouer (les données ne sont pas transmises). Si le champ contient la date (ou autre chose), la validation n'est pas déclenchée et le formulaire est envoyé normalement.
  6. Vérifiez que l'option Correspondance ou Remplacement est bien réglé sur Correspondance, puis sauvegardez les modifications

Votre formulaire est maintenant protégé. N'oubliez pas de tester son fonctionnement après la modification.

Cette technique n'est pas applicable avec le formulaire de contact par défaut de Joomla! parce qu'il n'est pas possible d'y inclure des champs cachés. Si vous utilisez une autre extension que Fabrik pour vos formulaires, il est possible que vous puissiez utiliser le même procédé si vous pouvez appliquer une validation sur des champs cachés.

element datephp validationcondition phpcode phpcorrespondance 

Bien entendu si tout ce qui précède vous semble trop compliqué et que vous avez besoin de protéger vos formulaires - de contact ou autres - nous vous aiderons avec plaisir. N'hésitez pas à nous contacter, nos tarifs sont très abordables.

Ressources

Le site web du projet Honey Pot

Le site Web de BotScout

Le site Web de Fabrik

 

Note : malheureusement, les extensions de commentaires pour Joomla! utilisent encore les bons vieux Captchas ... et se font spammer !

{jcomments on}