Topics

Personnalisation de Google Form pour une protection légère contre le spam

  • column

Suite à la demande de clients souhaitant migrer leurs formulaires de contact Web vers Google Form, nous avons précédemment implémenté une personnalisation de Google Form.

Nous publions tout cela dans une colonne, et heureusement, beaucoup de personnes semblent la consulter ! Merci beaucoup.

Les pièges à éviter lors de la création d'un formulaire client avec Google Form
Implémentation de l'écran de confirmation personnalisé de Google Form

Dans ce contexte, nous avons reçu une demande : comment protéger contre les messages spam massifs ?
Pour cette troisième édition de notre colonne Google Form, nous avons résumé les stratégies de protection anti-spam pour la personnalisation de Google Form.

La première solution qui m'est venue à l'esprit a été de vérifier si nous pouvions mettre en place reCAPTCHA, le service de sécurité gratuit proposé par Google.

Cependant,

Google Form n'a pas de paramètre standard ou de bascule pour « activer reCAPTCHA ». Il n'y a pas non plus d'option dans l'écran d'édition du formulaire, et ce n'est pas une fonctionnalité fournie officiellement par Google.

Tel était le constat. En approfondissant nos recherches, nous avons découvert que reCAPTCHA sur Google Form fonctionne selon la décision de Google, et nous ne pouvons pas savoir si le badge reCAPTCHA apparaîtra ou non !

De plus, la personnalisation de Google Form signifie que tous les identifiants de champs comme entry.386122698 doivent être saisis en HTML, ce qui les rend visibles en texte brut. Avec cette URL et cet ID entry, il est techniquement possible d'envoyer des POST directement à formResponse en utilisant de simples scripts comme curl ou les requests de Python, sans même ouvrir la page dans un navigateur.

En réalité, la plupart des spams sur Google Form suivent ce modèle : « appeler directement le point de terminaison sans passer par la page ». Même avec reCAPTCHA, cela reste un problème, car à moins que la validation du jeton ne soit effectuée côté serveur (par exemple avec Apps Script), cette route de POST direct ne sera pas bloquée, et cela ne sera pas une solution définitive.

Mais il existe des solutions !

En réalité, de nombreux vrais spambots utilisent une approche générique : « trouver un formulaire de contact, le remplir automatiquement et l'envoyer » (des bots qui rendent réellement la page et envoient via le DOM).

Pour ce type de bot, un mécanisme de contrôle du bouton d'envoi par JavaScript peut être efficace. Pour améliorer la précision, il est recommandé de combiner plusieurs techniques. Toutes ces approches ne nécessitent que des modifications du fichier HTML et ne touchent pas du tout à Google Forms ni à GAS.

Référence : [reddit] Comment empêcher les bots de spammer mon Google Form et de surcharger mon email ?

1. Générer aléatoirement chaque fois via JavaScript une addition entre deux nombres.

Math.floor(Math.random()*9)+1 est une simple formule de calcul générée aléatoirement. Via JavaScript, à chaque chargement de page, une équation aléatoire comme « 3 + 5 = ? » est générée et affichée à l'écran. L'utilisateur doit entrer la bonne réponse avant que le bouton d'envoi ne soit activé (il reste désactivé jusque-là).

Bien que cela crée un léger inconvénient pour l'utilisateur, cette approche a tendance à piéger les bots génériques qui ne réagissent pas à la UI visuelle et essaient simplement d'appuyer sur le bouton d'envoi.

2. Détection automatique via champ honeypot (champ de saisie invisible)

Créer un champ de saisie invisible en le positionnant hors de l'écran via CSS. Les humains ne toucheront jamais ce champ lors de l'utilisation, mais les bots qui remplissent mécaniquement tous les champs du formulaire avant d'envoyer vont aussi le remplir. Si ce champ contient une valeur au moment de l'envoi, celui-ci est annulé.

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 est très courant, donc cette protection est vraiment attendue.

Comme chaque type de bot peut être détecté différemment, combiner les deux approches réduit considérablement les risques d'en manquer.

Concernant les « spams de type POST directs sans passer par la page », l'inefficacité persiste.

Si une attaque de spam est dirigée directement vers Google Form sans passer par le site web, il n'y a pas d'autre choix que de recréer Google Form lui-même.

Sachant cela, l'introduction d'une « mesure d'atténuation contre certains bots courants » s'avère plutôt efficace !

Auteur de cet article

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

Voir les articles de ce membre

Notre équipe fiable et nos capacités de réactivité font notre fierté

Chez Liberogic, nos équipes expérimentées sont reconnues pour diriger activement les projets et sont hautement appréciées par nos clients.
Nous assignons correctement un chef de projet et un directeur, et veillons à assurer le déroulement fluide de l'ensemble du projet. Nous évitons une augmentation inutile des coûts en engagements complets, en allouant les ressources de manière optimale. Notre approche est réputée pour sa rapidité dans la compréhension des besoins, la création et la soumission des devis.

* Veuillez noter que nous n'engageons pas activement de missions d'intégration type SES.

Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom, Webex, et pratiquement tous les principaux outils de gestion de projet et de communication que vous utilisez.

Consultez-nous pour toute question ou préoccupation concernant le web.

Études de cas