---
title: "Alternative au CAPTCHA"
date: 2022-07-30
language: fr
topics: ["cloud", "cyber-security", "hacking", "people", "server", "web", "webdesign", "work"]
source_url: https://willem.com/fr/2022-07-30_alternative-au-captcha/
---
# Alternative au CAPTCHA

*Protège tes formulaires sans embêter personne*

> Il y a de fortes chances que tu aies déjà croisé un CAPTCHA : ils protègent les formulaires web en te demandant de recopier des caractères tordus ou de sélectionner les photos qui contiennent un objet précis. Pourquoi les utilise-t-on, et existe-t-il une alternative agréable pour l'utilisateur ?

## C'est quoi, un CAPTCHA ?

Conçus pour distinguer les ordinateurs des humains, les CAPTCHA te demandent souvent de faire quelque chose qu'un ordinateur a du mal à faire. L'acronyme veut d'ailleurs dire : Completely Automated Public Turing test to tell Computers and Humans Apart. Les créateurs de sites web utilisent les CAPTCHA pour protéger leurs formulaires contre le spam automatisé et les abus.

![Des CAPTCHA typiques que tu peux croiser sur le web (crédit image : Wikipédia et Google)](https://willem.com/global/images/a95bd60124e8.webp)

## Pourquoi protéger un formulaire ?

Un formulaire web classique fonctionne en deux étapes :

- **saisir les informations :** tu remplis quelques champs, puis tu cliques sur « ENVOYER » (ou quelque chose de similaire) pour continuer.

- **traiter les informations :** les informations que tu as saisies sont traitées par un serveur, qui transmet peut-être ton message ou ta demande à l'e-mail de quelqu'un.

![Un formulaire web classique : le serveur traite les informations d'une personne et les transmet à d'autres personnes, comme toi. Des personnes malveillantes peuvent facilement usurper l'expéditeur, ce qui permet d'abuser automatiquement de ton serveur de traitement](https://willem.com/global/images/062f9ea6ddbf.webp)

Le problème de cette approche classique, c'est que la première étape peut facilement être automatisée par des personnes malveillantes. Elles utilisent un autre ordinateur pour envoyer des informations au serveur en boucle, ce qui l'oblige à traiter une quantité énorme de données, souvent des messages de spam. Les pirates adorent tomber sur des formulaires où ils peuvent manipuler l'adresse « À », parce qu'ils peuvent alors utiliser ton serveur pour envoyer du spam à n'importe qui dans le monde.

Un CAPTCHA protège ton formulaire en empêchant un ordinateur d'envoyer automatiquement des informations à ton serveur.

## Les problèmes du CAPTCHA

Franchement, je les trouve moches et pénibles, et je_ne_suis_pas_le_seul (https://duckduckgo.com/?q=do+not+use+captcha). Ils mettent un obstacle devant les gens : taux de conversion plus bas, moins de clics, etc. En plus, ils sont souvent très hostiles aux personnes qui voient mal.

Les critiques reprochent aussi à Google d'être l'un des fournisseurs les plus populaires de tests CAPTCHA gratuits. On peut se demander pourquoi ils proposent ce service gratuitement. C'est un excellent moyen de s'inviter dans de nombreux parcours clients (commerciaux) et de nourrir leurs algorithmes avec davantage de données pour établir le profil des gens. À prendre en compte si tu tiens à ta vie privée et au RGPD / aux lois sur les cookies.

## Alternative

C'est pour ça que je me suis lancé dans la création d'une alternative efficace aux CAPTCHA, à utiliser sur les formulaires web que je construis pour mes clients. Mon approche a deux volets :

- **cacher :** la plupart des personnes malveillantes cherchent leurs cibles en repérant la balise FORM, qui sert souvent à construire les formulaires web. Mes formulaires n'ont pas de balise FORM, ils utilisent d'autres éléments courants comme DIV : un camouflage parfait. Si elles ne le trouvent pas, elles ne peuvent pas le casser. 

- **durcir :** mes formulaires web ajoutent une étape supplémentaire pour rendre leur exploitation plus difficile à automatiser. Je l'appelle « prendre un timbre » avant l'envoi.

## Signature cryptographique avant envoi : le timbre

Il faut bien comprendre que les personnes malveillantes raisonnent de façon économique : elles ne fournissent un effort que si le gain potentiel en vaut la peine. Si tu leur compliques assez la tâche pour abuser de ton formulaire, il y a de bonnes chances qu'elles passent leur chemin. Avant de t'expliquer ce que j'ai fait, un avertissement :

**Avertissement :** *Tu dois réfléchir à l'objectif de la protection de ton formulaire. Dans mon cas, il s'agit de réduire (fortement) le nombre de messages de spam tout en préservant la convivialité. Ça me permet d'imaginer un système qui n'offre pas forcément une protection « à toute épreuve ». Si tu veux protéger des secrets nucléaires, cette approche ne te conviendra peut-être pas. Pense toujours à ton modèle de menace !*

Pour protéger les formulaires web, j'ajoute une étape que j'ai baptisée « prendre un timbre ». Les étapes du formulaire protégé deviennent alors :

- **saisir les informations :** tu remplis quelques champs, puis tu cliques sur « ENVOYER » (ou quelque chose de similaire) pour continuer.

- **prendre un timbre :** juste avant l'envoi des informations, ton appareil contacte le serveur pour demander un jeton cryptographique qui correspond aux caractéristiques des informations *et* de l'expéditeur. Ça se passe en quelques millisecondes, personne ne le remarque. Vois le jeton comme un timbre, propre au colis que tu envoies, et à n'utiliser qu'une seule fois.

- **traiter les informations :** les informations que tu as saisies sont combinées au jeton cryptographique et envoyées au serveur. Si le jeton est valide, les informations sont traitées comme d'habitude. Les jetons invalides sont tout simplement ignorés, ce qui est important pour rendre la rétro-ingénierie très difficile en ne donnant aucun retour (le serveur répond toujours « OK » :-) ) !

![En introduisant un jeton unique à usage unique pour chaque message, il devient beaucoup plus difficile pour les personnes malveillantes d'automatiser l'envoi de messages : ton formulaire est protégé contre les spammeurs](https://willem.com/global/images/53152b30a5b4.webp)

Je fais tourner cette approche depuis 2016 et les serveurs de traitement ont géré littéralement des millions de messages, avec extrêmement peu de spams (<100). En y regardant de plus près, la plupart des spams qui passent sont du « travail manuel » : probablement des personnes malveillantes qui étudient le mécanisme. Comme casser le système semble demander trop d'efforts, il atteint très bien mon objectif de protéger les formulaires web.

## Conclusion

Les CAPTCHA sont très populaires, et on comprend pourquoi, mais il n'est pas toujours nécessaire de les mettre sur tes formulaires web si tu envisages des alternatives. Mon conseil : complique la vie des personnes malveillantes et facilite celle de ton public !
