Functie — verzamelen

Spambeveiliging waar u nooit doorheen hoeft.

NumoForms filtert rommelinzendingen met drie lagen die door een databasetrigger worden afgedwongen in plaats van door het formulier: een honeypot-veld buiten beeld, een ondergrens voor de invulduur van standaard 3 seconden en per enquête in te stellen, en een frequentielimiet van 30 antwoorden per minuut per enquête. Er is met opzet geen reCAPTCHA. Een antwoord dat door de controles wordt gemarkeerd, wordt niet weggegooid — de respondent hoort wat er gebeurde en kan het bevestigen.

De controle zit in de database, niet in de pagina

Antwoorden worden in NumoForms rechtstreeks vanuit de browser in de database geschreven. Dat betekent ook dat elke regel die alleen in de interface is opgeschreven vrijblijvend is. Een script dat rechtstreeks naar de API post, voert uw JavaScript nooit uit en ziet die controle dus nooit.

Daarom draaien de drie controles in een databasetrigger. Elke invoeging gaat daar doorheen, of zij nu van de gehoste enquêtepagina kwam, van een in een andere site ingesloten enquête, of van een script dat iemand om drie uur 's nachts schreef. Het is dezelfde redenering als achter sluitingsdatums en maximumaantallen, die eveneens op databaseniveau worden afgedwongen in plaats van door een knop te verbergen.

Wáár de controles draaien telt zwaarder dan hoe slim ze zijn. Twee van de drie signalen — de waarde van de honeypot en de verstreken tijd — worden door de browser meegestuurd, dus een op maat geschreven script kan het verborgen veld leeg laten en helemaal geen tijdgegevens versturen. De frequentielimiet heeft niets van de client nodig, en dat is precies waarom zij de laag is die overeind blijft wanneer de andere twee zijn weggelaten.

De drie lagen

1. Honeypot

Een veld dat buiten beeld staat en dat een mens die de enquête invult nooit ziet en nooit selecteert. Geautomatiseerde invulprogramma's neigen ernaar elk invoerveld in te vullen dat ze tegenkomen. Wat binnenkomt met dat veld gevuld, is niet ingevuld door iemand die de pagina las.

2. Invulduur

Een ondergrens, in seconden, voor hoe lang een antwoord duurde. De standaard is 3 en de waarde wordt per enquête ingesteld, zodat een consultatie met 40 vragen meer kan verlangen dan een feedbackformuliertje met twee. Ontbrekende tijdgegevens gelden niet als spam, dus oudere browsers en antwoorden die via een hervattingslink zijn voortgezet, werken gewoon.

3. Frequentielimiet

Antwoorden per minuut per enquête, standaard 30. Deze heeft helemaal niets van de client nodig, en dat is het punt: zij blijft overeind tegen een bot die elk stukje metadata weglaat waar de andere twee lagen op steunen.

Waarom er geen reCAPTCHA is

Dit is het besluit dat bij een aanbesteding het vaakst ter sprake komt, dus hier staat het hele betoog.

Het maakt Google subverwerker bij uw consultatie

reCAPTCHA op een openbaar consultatieformulier zetten betekent dat er van elke inwoner die het opent gegevens naar Google gaan voordat hij één vraag heeft beantwoord. Iemand in uw organisatie moet die doorgifte vervolgens vastleggen, rechtvaardigen en verdedigen in een privacyverklaring — voor een formulier dat bestaat om meningen over de vuilnisophaal te verzamelen. NumoForms bewaart enquête-inhoud en antwoorden in de regio Londen van Supabase, en de pagina over AVG en gegevensbescherming zet uiteen wat dat in de praktijk betekent. Een reclamebedrijf aan de verwerkingsketen toevoegen om een handvol rommelregels te onderscheppen, is een slechte ruil voor een lokale overheid die openbare consultaties houdt (Engelstalig).

Het laat respondenten met een beperking in de steek

Beeld- en geluidsopgaven zijn een goed gedocumenteerde oorzaak van mislukte inzendingen bij mensen met een beperking. Onze pagina over toegankelijkheid pleit precies tegen dat patroon. Een CAPTCHA uitleveren zou in strijd zijn met een standpunt dat wij publiceren, en een enquête die iemand met een schermlezer niet kan afmaken is geen enquête met goede spambeveiliging. Het is een enquête met een vertekende steekproef.

De drie controles die NumoForms uitvoert, zijn onzichtbaar. Er wordt niemand gevraagd iets te bewijzen, een bus aan te wijzen of vervormd geluid uit te typen. Er is geen opgave die u kunt missen.

Een weigering is nooit definitief

Elke vuistregel hier heeft een eerlijk geval van onterecht alarm, en doen alsof dat niet zo is, is precies hoe u echte gegevens kwijtraakt.

Een enquête met twee vragen wordt werkelijk in een paar seconden beantwoord. Een zaal met dertig mensen op een consultatieavond, die allemaal tegelijk de link krijgen, levert werkelijk dertig inzendingen in dezelfde minuut op. Allebei zien er vanuit de database precies uit als een aanval.

Daarom verdwijnt een gemarkeerd antwoord niet stilletjes in de prullenbak. De respondent krijgt te zien wat er gebeurde, behoudt zijn antwoorden en kan ze opnieuw versturen — bij die tweede poging vervalt het signaal van de invulduur, omdat een mens er zojuist voor heeft ingestaan. De honeypot en de frequentielimiet blijven wél gelden, dus een echte stortvloed wordt gevraagd het zo dadelijk nog eens te proberen in plaats van doorgelaten. Daarmee wordt het filter een drempel voor een script en één extra tik voor een mens. Een echt consultatieantwoord verliezen is erger dan een rommelantwoord accepteren, en dat laatste valt later gewoon op in uw resultaten en uitvalanalyse.

Wat dit niet doet

Ronduit gezegd, want u komt er toch wel achter.

  • Geen Cloudflare Turnstile. Dat is de privacyvriendelijke opgave die het vaakst als alternatief voor reCAPTCHA wordt genoemd, en zij is vandaag niet gekoppeld.
  • Geen blokkering op IP-basis. Niets hier blokkeert of beperkt op adres, dus een vastberaden aanvaller die inzendingen over veel bronnen verdeelt en ze onder de limiet doseert, wordt door deze drie lagen niet tegengehouden.
  • Twee van de drie signalen komen van de browser. De waarde van de honeypot en de verstreken tijd worden door de client aangeleverd, dus een script dat speciaal voor uw enquête is geschreven kan weigeren beide mee te sturen. Zij stoppen standaard invulprogramma's, geen gerichte aanvaller; de frequentielimiet is de laag die niet van medewerking afhangt.
  • Geen inhoudelijke filtering. De controles kijken naar hóé een antwoord binnenkwam, niet naar wat erin staat. Aanstootgevende vrije tekst is een moderatievraagstuk; eenstapsgoedkeuring houdt antwoorden vast totdat iemand ervoor tekent.

Waar deze lagen goed in zijn, is het gewone geval: geautomatiseerde invulprogramma's, bulkinzendingen vanuit één script, en het per ongeluk twee keer indienen.

Vragen die mensen stellen over spam in enquêtes

Gebruikt NumoForms reCAPTCHA?

Nee, en dat is een bewust besluit en geen gat. reCAPTCHA toevoegen zou van Google een subverwerker maken bij elke openbare consultatie, waar een functionaris gegevensbescherming vervolgens verantwoording over moet afleggen. De beeld- en geluidsopgaven ervan zijn bovendien een goed gedocumenteerde oorzaak van mislukte inzendingen bij respondenten met een beperking. De drie controles die NumoForms uitvoert zijn onzichtbaar: er is geen opgave die je kunt missen.

Wat gebeurt er als iemand werkelijk sneller antwoordt dan de minimale invulduur?

Diegene krijgt te zien wat er gebeurde en kan de inzending bevestigen, waarna zij alsnog doorgaat. Een enquête met twee vragen is werkelijk binnen drie seconden te beantwoorden, dus een harde weigering zou echte antwoorden weggooien. Een echt consultatieantwoord verliezen is erger dan een rommelantwoord accepteren.

Waarom worden de spamcontroles in de database afgedwongen en niet in het formulier?

Omdat antwoorden rechtstreeks vanuit de browser in de database worden geschreven. Alles wat alleen in de interface wordt gecontroleerd, kan worden overgeslagen door een script dat rechtstreeks post, dus een controle op interfaceniveau is een suggestie en geen maatregel. NumoForms voert de controles op honeypot, invulduur en frequentie uit in een databasetrigger, waar elke invoeging doorheen moet, ongeacht waar zij vandaan kwam.

Wat zijn de standaardwaarden voor invulduur en frequentie?

De ondergrens voor de invulduur staat standaard op 3 seconden en is per enquête in te stellen. De frequentielimiet staat standaard op 30 antwoorden per minuut per enquête. Die limiet heeft niets van de client nodig, dus zij geldt ook voor een bot die de tijdgegevens volledig weglaat.

Blokkeert NumoForms spam op IP-adres?

Nee. Er is geen blokkering op IP-basis en geen koppeling met Cloudflare Turnstile. De beveiliging bestaat uit de honeypot, de ondergrens voor de invulduur en de frequentielimiet per enquête, alle drie afgedwongen in de database.

Filter de rommel zonder puzzel.

De honeypot, de ondergrens voor de invulduur en de frequentielimiet per enquête draaien in een databasetrigger, dus elk antwoord gaat er doorheen, ongeacht via welke route het binnenkwam. Uw respondenten hoeven nooit een bus aan te wijzen.

  • Drie lagen: honeypot, invulduur, frequentielimiet
  • Ondergrens voor de invulduur per enquête in te stellen, standaard 3 seconden
  • Een gemarkeerde respondent kan bevestigen en doorgaan
Begin met bouwen