Comment protéger rapidement vos formulaires sans Captcha

Bien qu’un CAPTCHA soit généralement une solution efficace pour protéger les formulaires contre le spam, il arrive que cette option ne soit pas facilement ou rapidement accessible. Il se peut aussi que l’intégration en place laisse tout de même passer trop de messages indésirables. Voici deux alternatives simples et rapides à mettre en place pour protéger vos formulaires.

🤓 Alerte Geek : Bien que ce soit technique, la majorité des personnes ayant les accès nécessaires et un minimum de connaissances peuvent mettre en place les alternatives que je propose.

🌍 Provenance des SPAM via formulaire

Une entreprise qui n'avait pas de protection sur ces formulaires m’a contacté... En 1 mois, ils ont reçu 1615 demandes via leur formulaire. La grande majorité était des SPAM. J'ai analysé les logs et la provenance des requêtes... Voici le top 10 des pays d'où provenaient ces demandes :

(Seulement 4% des demandes provenaient du Canada et 3% des États-Unis! Le reste provenait de 66 autres pays.)

Cloudflare

Comment protéger vos formulaires avec Cloudflare

Si votre fournisseur DNS est Cloudflare (~19% des serveurs DNS), que votre site utilise la protection Cloudflare et que vous y avez accès, on peut facilement ajouter une règle qui permet de valider si l'utilisateur est un robot ou non lorsqu'un formulaire est soumis. Testez si votre site est protégé par Cloudflare: checkforcloudflare.selesti.com

Afin d'embêter le moins possible des visiteurs, je suggère de limiter la validation aux utilisateurs en fonction de leur provenance.

📄 Instructions

Dans votre compte Cloudflare, sélectionnez le domaine visé, dans notre cas ce serait “reptile.tech”. Ensuite dirigez-vous ici:
Security > WAF > Create Rule
Dans cet exemple, Cloudflare valide tous les visiteurs qui soumettent un formulaire et qui ne proviennent pas du Canada ou des États-Unis. Vous pourrez ajuster ces règles selon votre clientèle.

Capture écran création règle Cloudflare
Litespeed Web Server

Comment protéger vos formulaires avec .htaccess (et Litespeed)

Le fichier .htaccess est utilisé avec les serveurs web Apache (~30% des serveurs) et Litespeed (~13% des serveurs) et permet de définir des instructions qui sont traitées au niveau serveur, influençant le comportement du site web sans nécessiter d'accès à la configuration du serveur. Il se situe généralement à la racine du site web, mais il peut aussi être placé dans des sous-répertoires pour y appliquer des règles spécifiques. Les règles de géolocalisation et de captcha sont spécifiques au serveur web Litespeed.

📄 Instructions

Les instructions suivantes fonctionnent seulement si l'hébergeur a activé la géolocalisation et le captcha au niveau du serveur Litespeed. (Les bons hébergeurs le font!). Mais vous pouvez l’essayer en toute quiétude, car j’ai ajouté une condition pour que le serveur ignore les instructions s’il ne les reconnaît pas.

Vous devez modifier le fichier ".htaccess" à la racine de votre site Internet en utilisant FTP ou avec le File Manager de cPanel (pour ne nommer que ces 2 options). L'important est de ne pas insérer les instructions au milieu d'une autre instruction mais, pour être certain, vous pouvez insérer ces instructions à la fin du fichier. Prenez une sauvegarde du fichier avant toute modification!

Option 1 :
Ajouter un captcha à l’entrée d’une page contenant un formulaire pour les visiteurs en dehors du Canada et des États-Unis.


 <IfModule LiteSpeed>
    <IfModule mod_geoip.c>
       # Si la requête ne provient pas des États-Unis (US) ou(|) du Canada (CA)
       RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(US|CA)$
       # Pour cette liste de pages, on exige un captcha à l'entrée de la page:
       RewriteRule ^(fr/contact/|en/contact/) - [E=verifycaptcha:deny]
    </IfModule>
 </IfModule>


Option 2 :
Bloquer directement la soumission du formulaire pour TOUS les visiteurs de certains pays.


 <IfModule LiteSpeed>
    <IfModule mod_geoip.c>
       # Si la requête ne provient pas des États-Unis (US) ou(|) du Canada (CA)
       RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(US|CA)$
       # et que la requête est un formulaire soumis
       RewriteCond %{REQUEST_METHOD} POST
       # Pour cette liste de pages, on bloque:
       RewriteRule ^(fr/contact/|en/contact/) - [F]
    </IfModule>
 </IfModule>


*Pensez à tester vos formulaires après modification. Il vaut mieux recevoir du SPAM que de ne pas recevoir vos véritables demandes!

Cas vécu

Un client, n'ayant pas de protection "Capcha" à ses formulaires a reçu plusieurs SPAM d'un certain "ericjonesmyemail@gmail.com" de blazeleadgeneration(.)com provenant de plusieurs IP. Nous avons réussi à rapidement bloquer ces SPAM en utilisant cette règle Cloudflare.

En générant volontairement une erreur sur son formulaire de désabonnement, j’ai pu accéder à l’emplacement de sauvegarde des données et télécharger une liste contenant près de 500 000 domaines ayant tenté de se désinscrire. Cela montre l’ampleur de ce polluposter...

📄liste désinscrits de blazeleadgeneration(.)com
censuré

Jean-Francois Labelle

Jean-Francois Labelle
COO, Co-Fondateur
Aide l'équipe à résoudre leurs défis techniques
et s'assure de la qualité des livrables.


Nous joindre

Comment pouvons-nous vous aider?

Prénom
Nom
Courriel
Téléphone
Message