Sur la plupart des sites web, les formulaires, que ce soient ceux dans les sections "Contactez-nous", les forums de discussions ou autres, sont vulnérables au SPAM et à l'envoi abusif de contenu par des bots (des programmes automatiques qui simulent des actions qui devraient normalement être effectuées par des humains).
Il n'existe pas de moyens parfaitement fiables pour contrer ce fléau mais il y a quand même une technique qui permet d'en réduire considérablement le volume : le Captcha. Ce nom symbolise l'acronyme de "Completely Automated Public Turing test to tell Computers and Human Apart" et consiste à faire afficher un test qui permet de mesurer selon les probabilités si la réponse donnée par le visiteur est le fruit d'un cerveau humain (jusqu'à preuve du contraire, nous sommes supposés être plus intelligents que la machine).
Le modèle le plus fréquent est l'image contenant des lettres et des chiffres flous ou déformés qui doivent être saisis au clavier par le visiteur. Malheureusement, à mesure que les innovations des captchas avancent, les hackers développement eux aussi des mécanismes de plus en plus sophistiqués pour les déjouer. Placer un captcha dans une zone stratégique a au moins le mérite de minimiser les dégâts.
L'université Carnegie Mellon a développé un service gratuit nommé reCaptcha qui peut être intégré dans votre site assez facilement. D'ailleurs, des plugins sont disponibles pour PHP, .NET, Perl, Python, Java, WordPress, etc. Le principe de reCaptcha est qu'il utilise les vieux documents et manuscrits que l'OCR ne peut reconnaître correctement et soumet les termes en tant que captcha que le visiteur "humain" tente de déchiffrer, ce qui leur permet d'obtenir des résultats plus précis que ce qu'offre la reconnaissance optique des caractères.
Pour utiliser le service
- vous devez vous inscrire (gratuit) et fournir un nom d'usager, mot de passe et votre courriel. Vous devrez aussi faire vous-même le test du captcha pour prouver que vous êtes humain!
- Notez la clé publique et la clé privée qui vous seront assignées.
- Téléchargez la librairie PHP pour reCaptcha et déposez la dans votre serveur.
Dans votre formulaire, ajoutez l'appel qui génère le captcha :
<form id="frm" method="post">Validation dans le code PHP :
<!-- input fields... -->
<?php
echo recaptcha_get_html($public_key);
?>
<input type="submit" value="Enregistrer" />
</form>
require_once('ReCaptcha/recaptchalib.php');Les clés "recaptcha_challenge_field" et "recaptcha_response_field" du $_POST sont générées lors de l'appel de recaptcha_get_html().
$public_key = "VOTRE CLÉ PUBLIQUE";
$private_key = "VOTRE CLÉ PRIVÉE";
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$response = recaptcha_check_answer(
$private_key,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]
);
if (!$response->is_valid) {
echo 'Échec de la validation';
}
else {
// le captcha est valide
// effectuer le traitement normal
}
}
En français svp!
Vous remarquerez ici que le service est uniquement en anglais. Heureusement, on peut changer la langue par défaut pour traduire les textes et le captcha audio en modifiant la configuration. Ceci doit être fait par JavaScript en ajoutant dans l'entête le script suivant :
<script type= "text/javascript">Le thème rouge par défaut peut aussi être modifié pour se fondre plus facilement avec le design de votre site. Choisissez parmi red, white, blackglass, clean ou custom. Le dictionnaire custom_translations permet d'écraser les textes proposés mais celui-ci est optionnel.
var RecaptchaOptions = {
lang : 'fr',
theme : 'white',
custom_translations : { instructions_visual : "Entrez les mots ici :"}
};
</script>
Contrairement à d'autres captcha, celui-ci possède certains avantages:
- si les mots affichés ne sont pas clairs, on peut rafraîchir l'image pour en générer une nouvelle
- une personne non-voyante ne sera pas freinée par le déchiffrage des mots de l'image car une fonction auditive est disponible mais on doit porter attention à la prononciation. En anglais, ce sont des mots tandis qu'en français, il s'agit d'une séquence de huit chiffres à entrer.
En plus du texte brouillé à transcrire, d'autres bonnes idées à considérer sont le calcul simple d'une formule mathématique simple où le visiteur doit donner la réponse et l'identification d'une image parmi une liste affichée. Aussi, l'objet Zend_Captcha du Zend Framework possède d'autres types à explorer, dont le figlet (bannières textes ASCII).
Merci beaucoup!
Grand merci pour ces explications! :D
Cela ne marche pas avec le système de forum Vanilla …
Pour info, j'ai posté un message sur :
http://www.vanillaforums.org/discussion/11357/vanilla-2-how-to-make-translation-work-:-my-solution/
Merci. Bien utile, la traduciton en français.
Article intéressante mais corrige le "hacker" qui associe la philosophie des hackers à celle du spam :/
Merci mais contrairement à ce que tu dis j'ai l'impression que la traduction n'est pas effective sur le captcha audio. J'ai testé sur le tien pour valider ce commentaire, et l'audio est en anglais aussi alors que tes textes sont traduits en français. Est ce que cela fonctionnait avant ? Peut être que Google a modifié son API depuis.