Articles

reCaptcha : un CAPTCHA qui en fait plus

  • Ecrit par Damien Seguy
  • lundi 04 juin 2007
Image pour le titre du contenu

Vous connaissez surement les CAPTCHA : ce sont des outils qui sont souvent utilisés à protéger les formulaires contre leur utilisation par des robots. Le système classique consiste à afficher une image avec un texte déformé. La lecture du texte est facile pour un être humain, mais elle sera difficile pour un robot. Le CAPTCHA part alors du principe que si l'utilisateur ne peut par répondre à ce test, alors c'est un robot.

Ces tests sont de plus en plus utilisés sur les applications Web, et il a été calculé que 60 millions de CAPTCHA sont résolus tous les jours, représentant 150 000 heures de travail. Il faut remarquer que c'est un travail effectué en pure perte, puisque le test est immédiatement supprimé, quel que soit le résultat bon ou mauvais.

Or, il existe un domaine où les machines sont moins performantes que les humains : la numérisation de texte et la reconnaissance de caractère en est un. Les OCR (Optical Character Recognition, Reconnaissance Optique de Caractères) restent moins habiles à lire des textes que les humains. Pourquoi ne pourrait-on pas utiliser ce type d'opération dans le cadre des CAPTCHA? En faisant lire un texte numérisé par un être humain dans le cadre d'un CAPTCHA, ce dernier va non seulement prouver qu'il n'est pas un robot, mais en plus, il va transformer son effort en travail utile : la numérisation de livres. Tout ce que les OCR ne sont pas capables de lire peut être traité avec ce système. Les CAPTCHA fournissent une armée de volontaires... involontaires.

La grosse différence avec les CAPTCHA est que dans ces derniers, il faut connaître la valeur de la chaîne pour savoir si la réponse fournie par l'utilisateur est correcte. Justement, en OCR, on cherche à numériser un texte inconnu. ReCAPTCHA propose alors des CAPTCHA à 2 textes : l'un est déjà résolu, et l'autre n'est pas encore résolu. Evidemment, l'utilisateur ne sait pas quel est le CAPTCHA résolu et lequel ne l'est pas. Il doit donc résoudre les deux pour être sûr de passer. Au passage, reCAPTCHA.com collecte les numérisations et s'en sert dans le cadre de projets de bibliothèque virtuelle.

Utilisation de Recatcha en PHP
L'utilisation de reCaptcha se fait via un service Web. Pour pouvoir utiliser ce service, il faut s'inscrire sur le site de http://www.recaptcha.com/, à l'aide d'une simple adresse courriel. A partir de la, il faut ajouter une liste de site Web : pour des raisons de sécurité, il n'est pas possible de partager une clé entre plusieurs domaines. Il y au une clé publique et une clé privée.

Il y a une clé qui est utilisée pour rechercher le captcha lui-même. Elle sera utilisée directement dans la page HTML. Mais elle ne sert qu'à lire les CAPTCHA, et non pas à les tester.

A la réception du formulaire, on utilise la clé privée pour envoyer les réponses de l'utilisateur à recaptcha, et obtenir le résultat du test, ainsi qu'un message d'erreur.

Recaptcha.com propose une bibliothèque PHP avec des fonctions qui simplifient l'utilisation de recaptcha, et les limite à 2 appels de fonctions.

<?php
  echo recaptcha_get_html($publickey, $error);
?>
 
 
<?php
    $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);
//    $resp->is_valid : succes du test
//    $resp->error    : message d'erreur retourn&eacute;
?>

Autres remarques
Les clés produites sont étrangement assez proches. D'après nous, elles ne sont pas suffisamment distinctes pour assurer une protection robuste. Toutefois, la taille de la clé est honorable, ce qui devrait être suffisant pour protéger des formulaires de contacts.

Evidemment, si recaptcha.com n'est pas accessible, tout le système de protection tombe à l'eau. C'est recaptcha qui envoie les variables recaptcha_challenge_field et recaptcha_response_field, ce qui fait qu'elles ne sont plus du tout disponibles, et, par là, le site ne reçoit plus de résultat.

Recaptcha.com a le bon goût de proposer un système audio pour le captcha. Cela représente donc une solution rapide et peu chère pour

Même si le site fonctionne très bien, on ne sait pas combien de temps le service sera proposé. Pour le moment, il est gratuit et réactif, alors autant en profiter.

On regrettera l'absence de statistiques qui mesurerait le nombre de mots qui ont été numérisé à l'aide d'un site donné : peut-être qu'un peu de competition, même gratuite, pourrait accélerer l'adoption de ce système.

Conclusion
Nous avons installé recaptcha.com sur la partie formulaire de nexen.net, et cela fonctionne très bien. Les messages de spam ont tous disparus, mais les messages de contacts continue de bien arriver dans la boîte aux lettres. L'installation est plutôt rapide et sans douleur, et le concept est valorisant. Bref, une bonne application en ligne bien pratique.
< Précédent   Suivant >

Commentaires

Vous pouvez ajouter votre commentaire!


Vous devez vous connecter pour commenter