Fonctionnalité — collecte

Une protection anti-spam que vous n'avez jamais à franchir.

NumoForms filtre les soumissions parasites au moyen de trois couches appliquées par un déclencheur de base de données plutôt que par le formulaire : un champ leurre hors écran, un seuil de temps de saisie de 3 secondes par défaut et réglable par enquête, et une limite de débit de 30 réponses par minute et par enquête. Il n'y a délibérément aucun reCAPTCHA. Une réponse signalée par les contrôles n'est pas écartée : on explique au répondant ce qui s'est passé et il peut confirmer.

Le contrôle réside dans la base de données, pas dans la page

Dans NumoForms, les réponses sont insérées directement du navigateur vers la base de données. Cela signifie aussi que toute règle inscrite dans la seule interface n'a qu'une valeur indicative. Un script qui publie directement vers l'API n'exécute jamais votre JavaScript : il ne voit donc jamais le contrôle.

Les trois contrôles s'exécutent donc dans un déclencheur de base de données. Chaque insertion y passe, qu'elle provienne de la page d'enquête hébergée, d'une enquête intégrée dans un autre site ou d'un script écrit par quelqu'un à trois heures du matin. C'est le même raisonnement que pour les dates de clôture et les plafonds de réponses, eux aussi appliqués au niveau de la base de données plutôt qu'en masquant un bouton.

L'endroit où s'exécutent les contrôles compte davantage que leur ingéniosité. Deux des trois signaux — la valeur du champ leurre et le temps écoulé — sont envoyés par le navigateur : un script sur mesure peut donc laisser le champ caché vide et n'envoyer aucune durée. La limite de débit, elle, ne demande rien au client : c'est la couche qui tient encore lorsque les deux autres ont été retirées.

Les trois couches

1. Champ leurre

Un champ positionné hors écran, qu'une personne remplissant l'enquête ne voit jamais et ne sélectionne jamais. Les robots de remplissage de formulaires ont tendance à compléter chaque champ trouvé. Tout ce qui arrive avec ce champ rempli n'a pas été saisi par une personne lisant la page.

2. Temps de saisie

Un seuil, en secondes, sur la durée qu'a prise une réponse. La valeur par défaut est de 3 et se règle par enquête : une consultation de 40 questions peut donc exiger davantage qu'un formulaire d'avis à deux questions. Une durée manquante n'est pas traitée comme du spam, de sorte que les clients plus anciens et les réponses reprises via un lien de reprise fonctionnent toujours.

3. Limite de débit

Un nombre de réponses par minute et par enquête, fixé à 30 par défaut. Celle-ci ne demande absolument rien au client, et c'est tout l'intérêt : elle tient encore face à un robot qui supprime chacune des métadonnées sur lesquelles reposent les deux autres couches.

Pourquoi il n'y a pas de reCAPTCHA

C'est la décision la plus susceptible de revenir en procédure d'achat ; voici donc l'argument complet.

Cela fait de Google un sous-traitant de votre consultation

Poser un reCAPTCHA sur un formulaire de consultation publique signifie que chaque habitant qui l'ouvre envoie des données à Google avant même de répondre à une question. Quelqu'un dans votre organisation doit ensuite recenser ce transfert, le justifier et le défendre dans une notice d'information — pour un formulaire dont l'objet est de recueillir des avis sur la collecte des déchets. NumoForms conserve le contenu des enquêtes et les réponses dans la région londonienne de Supabase, et la page RGPD et protection des données expose ce que cela implique en pratique. Ajouter une régie publicitaire à la chaîne de traitement pour attraper quelques lignes parasites est un mauvais marché pour une collectivité qui mène des consultations publiques.

Cela met en échec les répondants handicapés

Les épreuves visuelles et sonores sont une cause bien documentée d'échec de soumission chez les personnes handicapées. Notre page accessibilité plaide précisément contre ce schéma. Embarquer un CAPTCHA contredirait une position que nous publions, et une enquête qu'un utilisateur de lecteur d'écran ne peut pas terminer n'est pas une enquête bien protégée du spam : c'est une enquête à l'échantillon biaisé.

Les trois contrôles exécutés par NumoForms sont invisibles. On ne demande à personne de prouver quoi que ce soit, d'identifier un autobus ou de transcrire un son déformé. Il n'y a aucune épreuve à réussir.

Le rejet n'est jamais définitif

Chacune de ces heuristiques comporte un cas honnête de faux positif, et prétendre le contraire serait le meilleur moyen de perdre de vraies données.

Une enquête de deux questions se répond réellement en quelques secondes. Une salle de trente personnes lors d'une réunion de consultation, toutes recevant le lien en même temps, produit réellement trente soumissions dans la même minute. Du point de vue de la base de données, les deux ressemblent exactement à une attaque.

Une réponse signalée n'est donc pas jetée en silence. On explique au répondant ce qui s'est passé, il conserve ses réponses et peut les renvoyer — la seconde tentative abandonne le signal de durée, puisqu'une personne vient d'en répondre. Le champ leurre et la limite de débit continuent de s'appliquer : un afflux réel est donc invité à réessayer dans un instant plutôt que laissé passer sans contrôle. Le filtre devient ainsi une gêne pour un script et une simple touche supplémentaire pour une personne. Perdre une véritable réponse de consultation est pire que d'en accepter une sans valeur, et une réponse sans valeur se repère ensuite dans vos résultats et votre analyse des abandons.

Ce que cela ne fait pas

Énoncé clairement, parce que vous finirez par vous en apercevoir.

  • Pas de Cloudflare Turnstile. C'est l'épreuve respectueuse de la vie privée le plus souvent proposée comme alternative à reCAPTCHA, et elle n'est pas intégrée aujourd'hui.
  • Aucun blocage par adresse IP. Rien ici ne bloque ni ne limite le débit par adresse : un attaquant déterminé qui répartirait ses soumissions sur de nombreuses sources en restant sous la limite n'est pas arrêté par ces trois couches.
  • Deux des trois signaux viennent du navigateur. La valeur du champ leurre et le temps écoulé sont fournis par le client : un script écrit spécialement pour votre enquête peut refuser d'envoyer l'un comme l'autre. Ils arrêtent les robots de remplissage ordinaires, non un attaquant ciblé ; la limite de débit est la couche qui ne dépend d'aucune coopération.
  • Aucun filtrage de contenu. Les contrôles portent sur la manière dont une réponse est arrivée, non sur ce qu'elle dit. Un texte libre injurieux relève de la modération ; les validations en une seule étape maintiennent les réponses en attente jusqu'à ce que quelqu'un les approuve.

Ce que ces couches traitent bien, c'est le cas ordinaire : les robots de remplissage de formulaires, les soumissions en masse issues d'un même script et le double envoi accidentel.

Ce que l'on demande souvent sur le spam dans les enquêtes

NumoForms utilise-t-il reCAPTCHA ?

Non, et c'est une décision délibérée plutôt qu'un manque. Ajouter reCAPTCHA ferait de Google un sous-traitant sur chaque consultation publique, ce qu'un délégué à la protection des données devrait ensuite justifier. Ses épreuves visuelles et sonores sont par ailleurs une cause bien documentée d'échec de soumission chez les répondants handicapés. Les trois contrôles exécutés par NumoForms sont invisibles : il n'y a aucune épreuve à réussir.

Que se passe-t-il si quelqu'un répond réellement plus vite que le temps de saisie minimal ?

On lui explique ce qui s'est passé et il peut confirmer sa soumission, qui est alors acceptée. Une enquête de deux questions se répond réellement en moins de trois secondes : un rejet ferme jetterait donc de vraies réponses. Perdre une véritable réponse de consultation est pire qu'en accepter une sans valeur.

Pourquoi appliquer les contrôles anti-spam dans la base de données plutôt que dans le formulaire ?

Parce que les réponses sont insérées directement du navigateur vers la base de données. Tout ce qui n'est contrôlé que dans l'interface peut être contourné par un script qui publie directement : un contrôle au niveau de l'interface est une suggestion, non une garantie. NumoForms exécute les contrôles de champ leurre, de temps de saisie et de débit dans un déclencheur de base de données, par lequel passe chaque insertion, quelle qu'en soit la provenance.

Quels sont le temps de saisie minimal et la limite de débit par défaut ?

Le seuil de temps de saisie est de 3 secondes par défaut et se règle par enquête. La limite de débit est de 30 réponses par minute et par enquête par défaut. La limite de débit ne demande rien au client : elle s'applique donc encore à un robot qui supprimerait entièrement les métadonnées de durée.

NumoForms bloque-t-il le spam par adresse IP ?

Non. Il n'existe aucun blocage fondé sur l'adresse IP ni aucune intégration de Cloudflare Turnstile. La protection repose sur le champ leurre, le seuil de temps de saisie et la limite de débit par enquête, tous appliqués dans la base de données.

Écartez les indésirables sans casse-tête.

Le champ leurre, le seuil de temps de saisie et la limite de débit par enquête s'exécutent dans un déclencheur de base de données : chaque réponse y passe, quelle que soit la voie par laquelle elle est arrivée. On ne demandera jamais à vos répondants de reconnaître un autobus.

  • Trois couches : champ leurre, temps de saisie, limite de débit
  • Seuil de temps de saisie réglable par enquête, 3 secondes par défaut
  • Un répondant signalé peut confirmer et poursuivre
Commencer à créer