Quels services anti-spam pour protéger nos formulaires de contact?

Bonjour tout le monde,

Suite à quelques discussions dans le cadre de la candidature de BOC47 à la 19e portée de CHATONS, nous avons évoqué la problématique de savoir quel logiciel anti-spam utiliser pour protéger un formulaire de contact. N’ayant pas trouvé de discussion dédiée à ce sujet sur le forum, je reposte ici une petite synthèse des échanges pour que ce soit plus facile à retrouver par d’autres par la suite.

Non recommandés :

  • WP Armour - Honeypot Anti Spam
  • hCaptcha for WP

Recommandé mais non testés :

Installé sur le site de BOC47 :

N’hésitez pas si vous avez des éléments pour enrichir ces réflexions.

Robin

Chez ARN, on a bricolé une bête question piège pour robot sur le formulaire de contact: Nous contacter | Alsace Réseau Neutre, Hébergeur et FAI associatif

Ça suffit pour se protéger des attaques automatiques, pas d’une attaque ciblée. En tout cas pour l’instant, ça fait le travail.

Une autre technique que j’ai vu passer, c’est d’avoir un formulaire dont un des champs est caché, ne contiens rien mais a un nom qu’un bot va vouloir remplir.

J’avoue que ma tentative marche moyennement, pour l’instant j’ai 8 bots qui ont réussi à passer contre 4 bloqués.

Mon formulaire : Mickaël Wolff | Services > Prendre contact
L’idée originale : @aeris.eu.org on Bluesky

(j’ai ajouté un champ vide depuis, on verra si ça change quoi que ce soit ^^)

Le hic des champs « cachés » de cette façon, c’est qu’ils ne le sont pas pour les lecteurs d’écrans… Du coup, les personnes qui utilisent un lecteur d’écran se font piégées.

La question piège qu’on utilise présente un calcul que la plupart des personnes savent faire « cinq fois 7 » (quitte à le faire avec une calculette). Si les textes des réponses possibles correspondent bien à des nombres, les valeurs associées sont des villes et le champs est lui même nommé ville. De cette façon, de nombreux robots vont croire qu’on demande la ville de la personne (et vont remplir au pif). Il y a donc une chance sur 50 (mais on aurait pu mettre plus de ville) pour que le robot tombe par hasard sur la bonne réponse.

<label for="contact-ville">Cinq fois 7 ? <span class="required">*</span></label>
<select name="data[ville]" id="contact-ville" required="required">
  <option value="paris">1</option>
  <option value="marseille">2</option>
  [...]
  <option value="argenteuil">35</option>
  [...]
</select>

Il y a également un « jeton » dans un champs caché (type=« hidden ») pour éviter qu’on puisse faire des requêtes POST sans avoir récupéré le formulaire avant avec un GET. Ca peut d’ailleurs être complété avec des règles fail2ban qui bannissent temporairement toutes IPs qui requêtent plus de 5 fois le même formulaire pour faire un POST ensuite…

Enfin bon, tout ça c’est basique. J’ai regardé mcaptcha, le fonctionnement avec preuve de travail semble accessible a priori. Donc ça peut être une bonne solution en effet.

Tout ça me fait me demander, si il y a des chatons qui proposent une instance mcaptcha en libre accès ?

1 « J'aime »

c’est qu’ils ne le sont pas pour les lecteurs d’écrans…

C’est pour ça que j’ai mis des labels explicites, et que j’ai vérifié qu’ils étaient bien ignorés dans l’onglet « Accessibility » de l’outil de dev de Firefox. J’espérais que c’était suffisant !

Je viens de regarder ton formulaire et effectivement t’as probablement raison: il semble accessible (en tout cas quand je navigue avec tab+lecteur d’écran), mais du coup, je suis pas surpris que certains robots passent le test…

Je pensais que c’était un champs cachés avec une autre technique qu’un display: none (qui du coup n’est pas accessible mais est plus efficace contre les robots :/).

1 « J'aime »