Tags

Pour éviter l’intrusion des robots sur votre site, il est important d’avoir un captcha mais celui-ci peut nuire à l’internaute. Alors optez plutôt pour un Captcha invisible.

Captcha invisible (HoneyPot ou Pot de miel)

Dans un précédent article, nous avions abordé la difficulté de réaliser un captcha (ou antispam) pertinent, c’est-à-dire qui allie à la fois une bonne lisibilité pour l’utilisateur et bonne efficacité contre les méchants robots qui veulent absolument nous vendre leur viagra en remplissant de façon automatique les formulaires de nos sites Internet. Et si la solution ultime était de ne plus avoir de captcha…

Principe du pot de miel ou piège à robot

Evidemment, vous l’avez deviné, l’idée n’est pas de laisser tomber votre barrage anti-robots spammeur mais de le remplacer par un captcha totalement invisible. Son principe est d’une simplicité enfantine, il consiste à tendre un piège aux robots.

La majorité des robots spammeur vont parcourir le web à la recherche de formulaires de contact. Dès qu’ils ont trouvé un formulaire, ils vont chercher remplir chaque champ puis soumettre le formulaire.

Le piège que nous proposons de placer (d’où le terme de pot de miel) est basé sur une faiblesse de ces robots, qui sont généralement incapables d’interpréter du CSS. Le principe est de placer un champ vide, qui sera rendu invisible en CSS. Si l’utilisateur est bien un humain, il ne remplira pas ce champs car il ne le verra pas, en revanche, un robots spammeur le remplira.

Un peu de technique

 

Pour mettre en œuvre, un pot de miel à priori rien de bien compliqué, il suffit d’insérer un champs vide rendu invisible via du CSS dans un formulaire.

<p>Si vous voyez ce champs, ne le remplissez pas <input type= »text » name= »commentaire » id= »commentaire  » value= » » /></p>

La technique du champ vide vous permettra d’éliminer un grand nombre de tentatives de spam, mais voilà, comme beaucoup de webmaster font des contrôles sur les champs des formulaires (pour vérifier par exemple le bon formatage d’un champ email), certains spammeurs font travailler des humains pour pré remplir ces champs et ainsi passer les contrôles du formulaire. Dans ce cas, notre captcha invisible risque d’être mis en échec.

 

Pour résoudre ce léger problème, nous proposons une petite variante qui consiste à pré remplir notre champ invisible avec un token (chaine de caractère à la durée de vie relativement courte) qui permettra au serveur de vérifier si le formulaire a été préalablement chargé dans le navigateur avant d’être rempli et soumis.
Dans sa version la plus simple, le serveur peut créer un token basé sur une chaine aléatoire qui est stocké en session.

<p>Si vous voyez ce champs, ne modifier pas son contenu <input type= »text » name= »commentaire » id= » commentaire  » value= »atHUiopfgKuotG45sd » /></p>

Conclusion

Cette technique se base sur un point faible des robots spammer et leur incapacité à interpréter correctement les CSS. Il est fort à parier qu’une parade sera trouvée par les robots-spammer si cette technique se généralise, en attendant, nous pouvons en profiter pour simplifier nos formulaires et les rendre plus ergonomique.

 

DAVY, Dirigeant et Fondateur de Cognix Systems et de l'agence WebGazelle

6 Comments

  • Martin

    13 juillet 2011 at 8 h 39 min

    Un ami a appliqué ceci sur l’un de ses forums. Cela a bloqué tous les spammeurs d’un coup, d’autant que le CAPTCHA était bien visible, un simple texte indiquant de ne pas le remplir, texte qu’il faut savoir lire et comprendre pour l’interpréter.

    Ceci étant, tu supposes ici que les robots ne savent pas interpréter le CSS. Tu as une vision quelque peu erronée de l’automatisation web. En effet, si c’est le cas de nombreux robots spammeurs, ce n’est pas le cas de tous les robots.

    Je t’invite à te documenter du côté d’outils tels que iMacros ou encore Selenium pour découvrir un monde nouveau.

    Enfin, puisque je vois que tu as un CAPTCHA reCAPTCHA protégeant tes commentaires, garde à l’esprit qu’ils ne pourront résister à des êtres humains. Or, le travail Humain coûte peu, dans certains pays, et rapporte plus que ce coût humain de la résolution d’un CAPTCHA graphique. Il devient alors de plus en plus pertinent de s’orienter non plus vers des protections purement graphiques, mais plutôt des protections logiques. Mais si c’est autrement plus difficile à contourner, c’est aussi moins évident à mettre en place.

    Répondre
  • La Gazelle du Web

    17 juillet 2011 at 8 h 36 min

    @martin : en fait, je suppose (et pour l’instant je le vérifie) que la majorité des robots.txt sont peu évolué, maintenant, tu as raison, il existe des robots performant (voir des humain performant). Comme j’en parlais dans un précédent article, à mon sens, un captcha performant n’est pas celui qui éliminera 100% du spam, mais mais celui qui offre le meilleur compromis entre facilité d’utilisation pour les internautes tout en conservant une bonne efficacité. C’est en ce sens ,que les captcha invisibles me semblent intéressant.

    voir aussi article: http://www.gazelle-du-web.com/ergonomie/captcha-ou-antispam-privilegier-la-securite-ou-la-lisibilite/ sont suffisants).

    Répondre
  • Greg

    27 octobre 2011 at 17 h 35 min

    J’ai eu l’occasion de tester le captcha invisible sous plusieurs formes (champ hidden, CSS visibility, CSS opacity:0, plusieurs champs invisibles…) et rien ne fonctionne. Après une période de calme tous ces systèmes ont été déjoués et le spam est redevenu très abondant sur mon site !
    Nouvelle tentative avec un champ visible accompagné du texte : « ne remplissez pas ce champ »

    Répondre
  • Greg

    1 décembre 2011 at 11 h 08 min

    Bonjour (et désolé pour le temps de réponse…)

    Je suis encore attaqué par les robots spammeurs. Aucune de mes solutions ne fonctionne pas même les images générées à moins de les rendre illisibles… Je n’ai pas compris le principe du token ni comment le mettre en place.

    Répondre

Laisser un commentaire