sécurité - anti spam
Captcha, koi-c-ça ?
Attention: cet article date du 18 avril 2008
Ce qu'il contient est peut être encore valable...
... ou complètement obsolète!
De plus en plus, on en trouve associé à des formulaires. Son rôle est de distinguer un être humain d’un robot, et permet d’éviter le Spam grandissant sur les sites Internet.
Plutôt intéressant dans son principe, encore faut-il qu’il soit bien pensé, bien mis en place, et efficace. Entendons par là : lisible par les êtres humains, impossible à décrypter par les robots…
Un peu de définition…
CAPTCHA est l’acronyme de Completely Automated Public Turing test to tell Computers and Humans Apart, c’est à dire test de Turing automatisé permettant de séparer les ordinateurs des êtres humains.
Basé sur les travaux du mathématicien TURING (on parle parfois de test de Turing), l’intérêt du CAPTCHA est de permetre de faire la différence entre être humain et intelligence articificielle. Le terme est une marque déposée par une université américaine.
Appliqué à Internet, il permet de s’assurer qu’un formulaire est rempli par un internaute, et non un robot – réduisant ainsi le spam.
Typiquement, l’internaute se trouve face à une image sur lesquelles sont représentées des lettres plus ou moins déformées, qu’il doit saisir.
Exemples
A gauche, issu de Google (sur le formulaire de soumission du site), on peut lire les lettres s u b a b
.
A droite, sur MSN (sur le formulaire d’inscription), le Captcha est plus délicat à déchiffrer, car plus déformé (5BAKHXAY
). Mais il est possible de demander au système de le lire à voix haute (même si, en l’espèce, la voix est également brouillée, pas forcément très très audible). Il est également possible de recharger le Captcha, pour qu’un autre soit proposé – fonction souvent indispensable.
Lisibilité, accessibilité
C’est suite à la lecture d’un article intitulé le Top 10 Worst Captchas que m’est venu l’idée de cet article. Il est vrai qu’il arrive souvent que le Captcha soit illisible (et cela venait de m’arriver quelques minutes plus tôt sur le blog de la FredZone).
Ne pouvant pas lire le Captcha, on ne peut donc pas valider le formulaire.
Dans les exemples ci dessus, les Captcha posent 3 problèmes différents, assez classiques.
- Le premier en haut à gauche montre des images, et une correspondance associant une lettre à chaque image. Si le principe est bon, je lui reprocherais de prendre trop de temps à décrypter – or on sait les internautes pressés.
- Le suivant, en haut à droite, est simple. Il pose une équation de niveau ingénieur en mathématique fondamentale, dont il faut donner la solution (je vous l’épargne…) Donc tout à fait lisible, mais incompréhensible si on est pas mathématicien… Placé sur un site communautaire ciblé, il pourra donc également servir de filtre pour limiter l’accès aux seuls mathématiciens.
- En bas à droite, les lettres sont tellement déformées qu’elles en deviennent illisibles.
Il est donc souvent préférable de mettre en place un Captcha sous forme de question posée, simple, dont il faut saisir la réponse. Exemple :
combien font 2 + 2 ?
Si l’internaute ne donne pas la bonne réponse (4, donc, si, si), on peut supposer que ce n’est pas un être humain, et donc refuser l’accès. Avantage de cette solution : elle est beaucoup plus accessible.
Un autre système (que l’on trouve rarement), consiste à afficher une liste d’images, et à demander à l’internaute de cliquer sur celle qui représente tel ou tel élément (5 chiens et un chat, on demande à sélectionner le chat...), ou à choisir une couleur parmi une liste de couleur (cliquer sur le rouge…).
Fonctionnement technique
Le principe (général) va consister à :
- générer sur le serveur une chaine aléatoire (ou piocher dans une liste de questions / réponses)
- crypter cette chaine pour la conserver dans une SESSION – donc la conserver sur le serveur
- générer une image représentant la chaine, qui est envoyée à l’Internaute (ou afficher la question qui correspond).
A la réception du formulaire, le script va crypter la saisie de l’internaute et comparer avec ce qu’il a crypté de son côté – si les deux coïncident, tout va bien. Sinon, il est souvent proposé à l’internaute de réessayer… avec un autre Captcha.
Je vous rassure, on trouve (relativement) facilement des bibliothèques de fonctions, qui permettent de mettre en place un système de Captcha sur son site, sans forcément y connaître grand chose en programmation.