Cet article fait suite à l'article Images anti-bot

symboles sony PS2

Ces symboles vous sont familier ? Au delà du fait qu'ils sont utilisés par Sony pour les 4 boutons de droites de leurs consoles de jeux, ce sont des formes géométriques que tout humain est capable de reconnaître facilement : carré, croix, rond et triangle.

Je vous rappel que l'idée ici est de voir une nouvelle façon d'aborder un anti-bot, idée que je compte développer plus profondément ici après y avoir pas mal réfléchit et l'avoir tournée dans tous les sens. Tout ça dans le but de faire éventuellement une petite bêta plus tard... hum... mouais... pour ça je vous tiendrais au courant ;)

Jusqu'à maintenant la majorité des anti-bots sont composés d'une image où l'on peut distinguer des caractères alphanumériques et un champ texte où l'utilisateur doit saisir ce qu'il aperçoit dans l'image[1]. La difficulté est alors triple et en voici les règles :

  • a/ empêcher des bots de comprendre le texte dans l'image pour qu'ils ne puissent pas le saisir dans le champ prévu à cet effet
  • b/ permettre à tout humain de lire facilement le texte compris dans l'image
  • c/ sécuriser le formulaire afin que la réponse ne puisse être déterminer autrement qu'en lisant le texte dans l'image

Autant c/ trouve une solution facile par la mise en place d'un système clé public/privée, que la mise en oeuvre de b/ rend celle de a/ difficile et vice-versa... voir même, privilégier a/ ira au détriment de b/ et b/ celui de a/

Ceci est pourtant l'approche habituelle de toute mise en oeuvre actuelle d'un anti-bot. Ce que je vous propose aujourd'hui c'est d'oublier la règle a/ ce qui permet de s'assurer de la mise en place de la règle b/, car si on ne brouille plus l'image pour le bot, l'humain n'a alors aucune difficulté pour lire la dite image. Seulement le bot va alors être également capable de lire l'image me direz vous ! Et je vous répondrait OUI !!!! Mais, alors ... ?!? :D

Et bien la principale raison de a/ est que le bot a dans cette approche le moyen de donner la réponse à la question posée... Je m'explique : ce qui est attendu dans la réponse est la même chose que ce qui est dans l'image, à savoir des caractères alphanumériques. Or un bot est capable de gérer les caractères alphanumériques et de les saisir dans le champ du formulaire[2]. L'idée serait alors de demander à l'utilisateur une réponse dans un format différent de celui de la question en partant du principe que le cerveau humain utilise encore bien des astuces et des raccourcis, donc temps de calcul, que les bots sont encore loin d'atteindre.

Imaginez donc une image avec les quatre symboles, vus plus haut, placés dans un ordre aléatoire et une suite de 4 réponses possibles proposant chacune ces 4 symboles dans des ordres différents avec seulement 1 réponse ayant le même ordre que celui de la question. Soit l'exercice typique que l'on trouve au début d'un test de QI ou sur les cahiers d'éveils de mes jeunes enfants ;)

Seulement, et afin de compliquer le tout pour le bot et surtout pour éviter de plonger dans la bêtise de le laisser bêtement comparer chaque image de réponse avec celle de la question, il faut avoir recourt à une astuce. Et c'est cette astuce qui fait toute la puissance de mon idée ;)

La totalité des images seront contenus dans une seule et plutôt que de numéroter bêtement chaque réponse, et bien un mot sera associé à cette réponse et sera écrit par dessus ou dessous les symboles par un jeu de transparence, et c'est ce mot qui devra être saisi dans le champ de réponse... Bon un exemple valant mieux qu'un long discours, voilà ci-dessous de quoi expliquer mon idée. Pour infos, cette image n'a pas été générée par une bêta déjà prête mais simplement réaliser avec the Gimp, donc côté dev tout est à faire ;)

Exemple

Alors la réponse ici est... je vous laisse en débattre dans les commentaires :)

Voilà qui clos ce billet, j'espère avoir intéressé quelqu'un avec cette possible solution sur la création d'un anti-bot efficace et je vous promet de la tester en vrai à l'occasion, et encore une fois si l'un d'entre vous est intéressé, qu'il me le fasse savoir, ça ne pourra que m'encourager à développer ça plus vite ;)

Affaire à suivre...

Notes

[1] Voir des exemples d'images dans mon précédent billet : Images anti-bot

[2] Bien entendu, le bot ne remplit pas les champs du formulaire mais lit les variables des champs et renseignes alors leur valeur en appelant l'adresse de destination du formulaire