Suite à une demande de migration du formulaire de contact d'un site web vers Google Form, nous avons mis en place une personnalisation de Google Form.
Nous avons publié ces points dans une colonne, et nous sommes heureux que de nombreuses personnes les consultent ! Merci beaucoup.
Pièges à éviter lors de la création d'un formulaire client avec Google Form
Implémentation d'un écran de confirmation pour la personnalisation de Google Form
Nous avons alors reçu une demande : comment prévenir les spams massifs reçus ?
À cette occasion, nous avons préparé cette documentation comme troisième article sur la personnalisation de Google Form, en nous concentrant sur la protection contre le spam.
En premier lieu, nous avons envisagé comme solution d'implémenter reCAPTCHA, le service de sécurité gratuit fourni par Google.
Cependant,
Google Form ne dispose pas de paramètre standard ou de bascule du type « Activer reCAPTCHA ». Il n'existe pas d'option de ce type dans l'écran d'édition du formulaire, et il est correct de comprendre que ce n'est pas une fonctionnalité officiellement fournie par Google.
Cela dit, après une enquête plus approfondie, reCAPTCHA pour Google Form semble fonctionner selon les critères de Google, et nous ne savons pas si la marque reCAPTCHA apparaîtra ou non !
Au départ, la personnalisation de Google Form implique de saisir les identifiants de champ, tels que entry.386122698, dans le HTML, de sorte que tout est visible en texte brut. Techniquement, en connaissant cette URL et l'ID d'entrée, il est possible d'envoyer un POST directement à formResponse via un simple script comme curl ou requests Python, sans ouvrir la page dans un navigateur.
En réalité, la plupart des spams sur Google Form suivent ce schéma « contournant la page pour accéder directement au point de terminaison », et même avec reCAPTCHA, cela reste le cas : tant que la validation du jeton n'est pas effectuée côté serveur, par exemple via GAS, la protection ne s'applique pas à la route de POST direct et ne constitue donc pas une solution définitive.
Mais il existe des solutions !
En réalité, de nombreux spambots utilisent une approche générique : « trouver le formulaire de contact, le remplir automatiquement et l'envoyer » (bots qui restituent réellement la page et envoient via le DOM).
Face à ce type de bot, contrôler le bouton d'envoi avec JavaScript s'avère efficace. Pour une meilleure efficacité, il est recommandé de combiner plusieurs mécanismes. Tous ces ajustements se font uniquement au niveau du fichier HTML, sans toucher à Google Forms ni à GAS.
Référence : [reddit] How can I prevent bots from spamming my Google Form and flooding my email?
1. Générer et afficher aléatoirement une addition de deux chiffres avec JavaScript à chaque chargement.
Une simple expression arithmétique générée aléatoirement avec Math.floor(Math.random()*9)+1. JavaScript génère à chaque chargement de page un calcul aléatoire, comme « 3 + 5 = ? », et l'affiche à l'écran. Le bouton d'envoi reste désactivé jusqu'à ce que l'utilisateur entre la bonne réponse.
Bien que cela impose un léger effort à l'utilisateur, ce mécanisme tend à bloquer les bots génériques qui ignorent les éléments visuels et tentent de cliquer directement sur le bouton d'envoi.
2. Détection automatique via un champ honeypot (champ de saisie invisible)
Créer un champ de saisie invisible en le plaçant hors de l'écran avec CSS. Les humains ne le toucheront jamais, mais les bots qui remplissent mécaniquement tous les champs du formulaire avant d'envoyer y mettront une valeur. Le mécanisme annule l'envoi si ce champ contient une valeur au moment de la soumission.
Cette approche est efficace contre les bots qui remplissent mécaniquement tous les champs du formulaire (visibles ou non) avant d'envoyer. Ce type de bot étant très courant, cette contre-mesure offre une protection intéressante.
Comme chaque type de bot peut être détecté différemment, la combinaison des deux approches réduit les omissions.
Pour les « spams de type POST direct sans passer par la page », l'inefficacité persiste.
Si Google Form est attaqué directement par du spam sans passer par le site web, il faut finalement recréer Google Form lui-même.
En tant que « mesure d'atténuation contre certains bots courants », son introduction serait plutôt efficace, non ?
Je me concentre principalement sur le balisage, et je développe le frontend en utilisant JavaScript, React et Next.js. Je suis toujours ravi quand un site auquel j'ai participé est lancé avec succès ! Mon hobby est de jouer de la guitare. J'aime les chats et les patates douces🐱🍠
Hira
Ingénieur frontend / Embauché en 2022