CAPTCHA
Un CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) est un test de sécurité qui distingue les humains des robots sur un site web. Le problème : la plupart des CAPTCHA reposent sur la vision ou l'audition, ce qui exclut les personnes aveugles, malvoyantes ou ayant des troubles cognitifs. Des alternatives invisibles existent.
Vous remplissez un formulaire, vous cliquez sur « Envoyer »… et un mur d'images apparaît : « Sélectionnez tous les feux tricolores. » Pour un utilisateur de lecteur d'écran, ce mur est invisible. Depuis 14 ans d'enquêtes WebAIM, les CAPTCHA restent le problème d'accessibilité n°1 signalé par les utilisateurs de lecteurs d'écran.
#Pourquoi les CAPTCHA classiques excluent
Le CAPTCHA visuel (texte déformé, grilles d'images) repose sur un seul sens : la vue. L'alternative audio, souvent proposée en complément, est brouillée par des sons parasites pour résister aux bots. Une personne sourde-aveugle ou avec des troubles cognitifs se retrouve sans option.
Le W3C le documente depuis 2005 : tout CAPTCHA interactif exclut par nature certains utilisateurs handicapés. reCAPTCHA v2 (la case « Je ne suis pas un robot ») déclenche un test d'images en cas de doute, et son audio reste difficile à comprendre même pour des personnes entendantes. Beaucoup de ces interfaces ne sont pas navigables au clavier.
#Ce que disent les normes
Le critère WCAG 1.1.1 (niveau A) prévoit un cas spécifique pour les CAPTCHA : l'alternative textuelle doit identifier la nature du test et décrire son objectif, sans le résoudre. Le RGAA consacre deux critères au sujet : le 1.4 exige une alternative textuelle décrivant la nature du CAPTCHA, le 1.5 impose une solution d'accès alternatif.
Un CAPTCHA visuel seul, sans alternative, est non conforme.
#Les alternatives qui fonctionnent
Trois approches ne demandent aucune interaction visuelle ni auditive :
- Honeypot : un champ de formulaire masqué en CSS. Les humains ne le voient pas. Les bots le remplissent.
- Scoring comportemental (reCAPTCHA v3, Cloudflare Turnstile) : analyse des mouvements de souris et du rythme de frappe en arrière-plan. Aucun puzzle à résoudre.
- Preuve de travail : le navigateur effectue un calcul cryptographique invisible pour l'utilisateur.
<!-- Honeypot : champ invisible pour les humains -->
<div style="display: none;" aria-hidden="true">
<label for="website">Ne pas remplir</label>
<input type="text" id="website" name="website" tabindex="-1" autocomplete="off">
</div>Le honeypot seul ne suffit pas contre les bots sophistiqués. Combinez-le avec une limitation de fréquence côté serveur pour une protection solide sans CAPTCHA visible.
#En résumé
Si votre formulaire a besoin d'une protection anti-robots, privilégiez les solutions invisibles. Vos utilisateurs ne devraient pas avoir à prouver qu'ils sont humains en accomplissant une tâche qu'ils ne peuvent pas accomplir.