Spam, bot e invii duplicati: fermarli senza rompere l'anonimato
Ogni meccanismo che blocca un duplicato è un identificatore — un indirizzo IP, un cookie, un indirizzo e-mail, un account. La vera domanda progettuale è quindi: quale identificatore potete giustificare di conservare, e per quanto tempo? Campi trappola, limiti di frequenza, blocchi automatici, token monouso, marcatori del dispositivo e lo schema « anonimo ma verificato », ordinati per quanto anonimato costano.

Due richieste arrivano insieme in quasi ogni progetto di modulo. « Assicuratevi che i bot non possano riempirlo di spam » e « assicuratevi che nessuno possa inviare due volte ». Poi, spesso nella stessa riunione, una terza: « e deve essere anonimo ». Queste tre frasi sono in tensione, e la tensione non è un limite del prodotto: è aritmetica. Per sapere che questo invio non proviene dalla stessa persona di quello, serve qualcosa che distingua le persone. Quel qualcosa è un identificatore, e un identificatore è l'opposto dell'anonimato.
In breve
Spam e duplicati sono problemi diversi con soluzioni diverse. Lo spam è un problema di volume: limiti di frequenza, campi trappola, limiti strutturali e validazione ne risolvono la maggior parte senza identificare nessuno. I duplicati sono un problema di identità: ogni meccanismo — cookie, indirizzo IP, e-mail, account, token monouso — è un identificatore, quindi la domanda progettuale è quale sia l'identificatore più debole che risolve il vostro problema reale, e per quanto tempo lo conservate. E dove la risposta deve restare anonima, la soluzione è separare l'idoneità dall'invio, senza mai archiviarli insieme.
Questo articolo è la versione pratica di quel bilanciamento: cosa usare contro lo spam, quanto costa davvero ogni meccanismo anti-duplicato, come funziona lo schema « anonimo ma verificato » e quando richiedere un accesso con account è la risposta giusta invece di quella pigra.
Come impedisco spam e bot?
Partiamo da qui, perché questa metà è davvero semplice e non costa alcun anonimato. Quasi tutto lo spam nei moduli è automatizzato, non mirato ed economico: script che trovano un endpoint pubblico e vi inviano richieste in serie. Quattro livelli bastano.
- Limiti di frequenza. Un tetto al numero di invii che una sorgente può fare al minuto, all'ora e al giorno trasforma un'ondata in rumore di fondo. I limiti devono essere abbastanza generosi da sopravvivere agli usi legittimi — un ufficio condiviso, una scuola, un tablet-chiosco a un evento, un Cantone dietro NAT — e devono fallire in modo aperto: un limitatore guasto non deve mai bloccare traffico reale.
- Un campo trappola. Un campo invisibile per le persone ma presente nel markup. Gli esseri umani lo lasciano vuoto; i bot ingenui riempiono tutto. Non costa nulla, intercetta una quota sorprendente e non aggiunge nessun identificatore.
- Limiti strutturali. La difesa più sottovalutata. Chiudete il modulo a una data. Fissate un tetto al numero totale di risposte. Mettetegli un codice di sblocco. Un modulo che accetta 200 risposte e poi si ferma non può essere inondato fino a 20 000, e nessuno di questi tre controlli ha bisogno di sapere chi sta inviando.
- Validazione e campi obbligatori. Controlli di formato, regole di plausibilità e risposte richieste filtrano la spazzatura che sopravvive al resto, e migliorano comunque la qualità dei vostri dati.
A questi si aggiunge il livello di escalation: dopo un numero sufficiente di richieste rifiutate da una sorgente, quella sorgente viene bloccata temporaneamente. Il dettaglio progettuale decisivo è che i blocchi automatici devono scadere. Un blocco automatico permanente finisce per punire una rete condivisa — un albergo, un ospedale, un'università — per il comportamento di una sola persona al suo interno.
La questione del CAPTCHA
Un CAPTCHA di terze parti funziona, e ha un prezzo che raramente entra nella decisione: carica uno script estraneo nella pagina del vostro modulo e profila i vostri rispondenti per conto vostro. È una comunicazione a un terzo, di solito in un'altra giurisdizione, che appartiene alla vostra informativa e al vostro registro dei trattamenti — e avviene a ogni apertura della pagina, prima che qualcuno invii qualcosa. Peggiora inoltre l'accessibilità proprio per chi ha meno strumenti per protestare. Se il vostro problema di spam è volume non mirato, i quattro livelli sopra lo risolvono senza nulla di tutto questo. È il motivo per cui Schweizerform non include deliberatamente alcun CAPTCHA di terze parti.
Ogni meccanismo anti-duplicato è un identificatore
I duplicati sono un problema diverso, e qui conta un'impostazione onesta. Non esiste modo di imporre « un invio per persona » senza sapere nulla della persona. Ciò che varia è quanto apprendete, per quanto tempo lo conservate e se è ricollegabile a un essere umano. Secondo la nLPD un indirizzo IP riferito a una persona identificabile è un dato personale: ogni riga della tabella seguente è dunque una decisione di trattamento che richiede una finalità e una durata di conservazione.
| Meccanismo | Che cosa viene archiviato davvero | Quanto funziona | Costo in anonimato |
|---|---|---|---|
| Marcatore del dispositivo (local storage o cookie) | Un contrassegno nel browser del rispondente; nulla da parte vostra | Blocca i doppi invii accidentali; si aggira con un altro browser o una finestra privata | Il più basso — non archiviate nulla di identificante |
| IP sottoposto a hash per modulo | Un'impronta a senso unico di (modulo + IP), non l'indirizzo stesso | Applicato lato server ed efficace; blocca tutti dietro una connessione condivisa | Basso se con salt per modulo e pepper lato server; alto se archiviate l'IP grezzo |
| Token monouso o link personalizzato | Un elenco dei token emessi e di quali sono stati usati | Robusto; la risposta standard per una platea nota come soci o dipendenti | Dipende interamente dal fatto che l'elenco dei token sia collegato ai nomi |
| Conferma via e-mail | L'indirizzo e-mail verificato del rispondente | Robusto contro i duplicati occasionali, debole con chi ha due indirizzi | Alto — ora detenete un identificatore diretto accanto alle risposte |
| Accesso con account | Un'identità completa, più i log di sessione e di accesso | Il più forte disponibile | Il più alto — l'anonimato è finito; avete un rispondente con nome e cognome |
La regola che ne segue: scegliete il meccanismo più debole che risolve il problema che avete davvero. Un'indagine di gradimento in cui una manciata di risposte doppie non cambierebbe alcuna decisione si accontenta della prima riga. Una votazione associativa che decide un bilancio ha bisogno della terza. Ricorrere all'account perché è definitivo, in un contesto in cui i duplicati non avrebbero contato, trasforma un insieme di dati anonimo in dati personali senza alcun guadagno analitico.
« Archiviamo solo un hash » non va automaticamente bene
L'hash di un indirizzo IP resta un dato personale se può essere ricalcolato. Se il salt è pubblico, identico tra moduli, o se il valore non è « pepato » con un segreto lato server, chiunque abbia un IP candidato può confermare una corrispondenza — e lo stesso hash presente su due moduli collega i due invii. Tre proprietà fanno la differenza: un salt per modulo perché il valore non sia correlabile tra moduli, un segreto detenuto dal server perché non si possa risalire a forza bruta a un indirizzo, e la cancellazione insieme all'invio perché non sopravviva alla propria finalità.
Come impediamo gli invii duplicati?
Una volta per dispositivo — chiamandolo con il suo nome
Un contrassegno archiviato nel browser del rispondente impedisce a quello stesso browser di inviare due volte. È per costruzione una misura « al meglio possibile »: un browser nuovo, un altro dispositivo o una finestra privata la azzerano, e chi vuole può cancellarla. È quindi esattamente adatta al problema reale più comune — cliccare due volte su Invia, o ricompilare il modulo per il dubbio che non fosse andato a buon fine — ed esattamente inadatta a qualsiasi contesto avversariale. Gli strumenti che la vendono come « una risposta per persona » promettono troppo; la descrizione corretta è « una risposta per browser, a meno che qualcuno non ci provi ».
Una volta per IP — lato server, con due riserve
Verificare se dalla stessa rete è già arrivato un invio avviene sul server, quindi resiste ai trucchi del browser. Le due riserve sono guasti opposti, e contano entrambe. Una connessione condivisa — un ufficio, una scuola, una famiglia, il NAT di un operatore mobile — fa apparire più persone legittime come una sola, e la seconda viene rifiutata. E le reti mobili ruotano gli indirizzi, così una persona appare come diverse. È un buon controllo per situazioni « uno per nucleo familiare » e per i chioschi agli eventi, ed è scadente per « un voto per socio » in un luogo di lavoro.
Due dettagli la rendono difendibile in pratica: archiviare un'impronta con salt per modulo e pepper lato server invece dell'indirizzo, e cancellare l'impronta quando l'invio viene cancellato — così rimuovere una risposta libera di nuovo quella rete e l'identificatore non sopravvive ai dati che doveva proteggere.
Token monouso — la risposta giusta per una platea nota
Se sapete chi ha diritto di rispondere — soci, dipendenti, nuclei invitati, partecipanti iscritti — consegnate a ciascuno un codice o un link a uso singolo e contrassegnatelo come usato all'invio. È preciso, resistente ai duplicati e, soprattutto, governabile nelle sue proprietà di riservatezza: che riveli o no l'identità dipende unicamente dal fatto che conserviate la corrispondenza fra token e persona. Conservatela e avete un'indagine pseudonima. Distruggetela all'emissione e ottenete qualcosa di molto più vicino all'anonimato — vedi la sezione seguente.
La misura che si dimentica: rendere inutile il duplicato
Gran parte dell'ansia da invii duplicati è in realtà ansia per un premio: posti limitati, un buono, la partecipazione a un concorso, un voto che ribalta un esito. Dove non potete verificare in modo forte, togliete invece l'incentivo — fissate un tetto complessivo, assegnate per estrazione fra tutte le candidature invece che a chi arriva prima, deduplicate a posteriori in fase di esame invece che all'ingresso, o rendete la ricompensa indipendente dal numero di invii. Rileggere 300 risposte per individuare i duplicati evidenti costa un pomeriggio; identificare 300 persone costa una base giuridica.
Come verifico i rispondenti senza perdere l'anonimato?
È il requisito che sembra impossibile ed è soltanto scomodo. Ricorre continuamente: un'associazione in cui ogni socio vota una volta ma nessun voto deve essere attribuibile; un canale di segnalazione che deve accettare rapporti solo dai dipendenti; un'indagine interna che deve raggiungere tutti una volta e non identificare nessuno. Lo schema che lo risolve ha un'idea al centro: separare la verifica dell'idoneità dall'invio e non archiviarli mai insieme.
Verificare l'idoneità in un sistema
Usate il registro dei soci, l'elenco HR o la lista degli inviti per stabilire chi può rispondere. Questo sistema conosce i nomi; è il suo compito.
Emettere una credenziale non collegata
Consegnate a ogni persona idonea un token a uso singolo che non derivi dalla sua identità e non venga registrato a suo nome. Generate i token, distribuiteli e conservate solo il numero — non chi ha ricevuto quale.
Accettare l'invio contro il token, non contro la persona
Il modulo verifica che il token sia valido e non usato, lo contrassegna come usato e archivia le risposte senza altri riferimenti. Risultato: una risposta per persona idonea, senza alcun percorso da una risposta a un nome.
Rinunciare agli extra allettanti
Nessun log degli IP su quel modulo, nessun link personalizzato, nessun campo e-mail « per la conferma », nessun timestamp con una precisione che identifica nei gruppi piccoli. Ognuno di questi elementi ricollega in silenzio ciò che il passo 2 aveva separato.
Guardare la soglia di reportistica, non solo la raccolta
La verifica è solo metà dell'anonimato. Pubblicare un risultato calcolato su tre risposte re-identifica le persone, per quanto pulita sia stata la raccolta — le soglie sono nel nostro articolo sui sondaggi anonimi ai dipendenti.
Dire con onestà il rischio residuo
Questo schema offre un anonimato pratico solido, non una garanzia crittografica. Chi distribuisce i token potrebbe annotare quale è andato a chi; una popolazione piccola più una risposta a testo libero identifica comunque l'autore; e il sistema di idoneità conosce ancora il tasso di risposta, che in una squadra di cinque persone equivale quasi a sapere chi ha risposto. Ditelo, quando promettete l'anonimato. Una promessa precisa sopravvive a una persona scettica in riunione, una assoluta no — e la distinzione fra anonimo e pseudonimo merita la lettura di moduli anonimi e pseudonimi.
Devo richiedere un account o un indirizzo e-mail?
A volte, e vale la pena decidere con consapevolezza da quale parte state. Richiedere l'identità è la risposta giusta quando il processo è comunque nominativo: una domanda di prestazioni, un dossier di finanziamento, un'accettazione di paziente, un acquisto, tutto ciò a cui risponderete individualmente. Lì l'identità è il punto, e sostenere il contrario aggiunge attrito senza aggiungere riservatezza.
È la risposta sbagliata quando il valore dei dati dipende dalla sincerità. Lamentele, segnalazioni di illeciti, indagini di clima, denunce di molestie, giudizi sulla dirigenza: appena un accesso con account si frappone al modulo, la qualità delle risposte scende e quelle che arrivano sono le più prudenti. Non è un'ipotesi: è il risultato più solido della ricerca sul feedback interno, ed è il motivo per cui il nostro caso d'uso HR e segnalazioni tratta la raccolta senza identità come un requisito funzionale e non come una cortesia in materia di riservatezza.
- Richiedete l'identità quando dovete rispondere individualmente, verificare con precisione un diritto, adempiere a un obbligo legale di identificazione o muovere denaro.
- Evitate l'identità quando la finalità è la misurazione o la segnalazione di illeciti, quando la popolazione è abbastanza piccola da essere re-identificata, o quando avete promesso l'anonimato in qualche punto delle vostre comunicazioni.
- Nei casi intermedi preferite un token monouso all'account e un campo di contatto facoltativo a uno obbligatorio — « lasciate un indirizzo se desiderate una risposta » rispetta entrambi i casi insieme.
Che cosa dovrebbe gestire la piattaforma per impostazione predefinita
Parte di questo elenco non dovrebbe essere una vostra decisione. Una piattaforma per moduli dovrebbe arrivare con controlli anti-abuso già attivi, tarati con generosità e attenti alla riservatezza — così che a voi resti solo la scelta della regola sui duplicati per ciascun modulo.
- Limiti di frequenza sulla superficie pubblica — per modulo e globali, su più finestre temporali, tolleranti verso chioschi e reti condivise, e con fallimento aperto quando il limitatore stesso ha un problema.
- Limiti anche sui bordi rumorosi, non solo sull'invio: visualizzazioni del modulo, tentativi con codici di accesso e richieste di ID di modulo inesistenti, così da limitare anche l'enumerazione e il gonfiaggio del contatore di visualizzazioni.
- Blocchi automatici che scadono per una sorgente che continua a provocare rifiuti, più un blocco manuale per il raro caso persistente — con una voce di audit per entrambi.
- Una regola sui duplicati per modulo, impostabile senza aprire un ticket: libera, una volta per dispositivo o una volta per rete.
- Un'applicazione rispettosa della riservatezza — un'impronta con salt per modulo e pepper lato server invece di un indirizzo IP archiviato, cancellata insieme all'invio.
- Nessuno script di terze parti sulla pagina del modulo, perché il livello anti-abuso non diventi esso stesso una comunicazione a un responsabile del trattamento estero.
- Blocco degli indirizzi usa e getta in fase di registrazione, dove le caselle temporanee permettono a un solo soggetto di creare account senza limiti — e deliberatamente non al login né al recupero della password, così che un cliente esistente su un dominio del genere non resti mai tagliato fuori dai propri dati.
Una cosa nessuna piattaforma può farla per voi: scrivere le misure nell'informativa. Se limitate la frequenza, bloccate indirizzi o create impronte delle reti, quello è trattamento, e la trasparenza dell'art. 19 nLPD vi si applica come alle risposte. Una riga — « per prevenire abusi registriamo dati tecnici come un'impronta della rete, conservati per la durata del modulo » — basta, ed è proprio la riga che cerca un revisore.
Scegliere il controllo per un modulo reale
| Modulo | Rischio reale | Controllo consigliato |
|---|---|---|
| Modulo di contatto o di feedback pubblico | Spam automatizzato; doppi invii accidentali | Limiti di frequenza più campo trappola; marcatore del dispositivo; nessun identificatore |
| Iscrizione a un evento con posti limitati | Sovraprenotazione; iscrizioni multiple opportunistiche | Tetto alle risposte più data di chiusura; l'e-mail serve comunque per la conferma |
| Votazione di associazione o comitato | Il voto doppio decide l'esito | Token monouso dal registro dei soci, emessi senza collegamento; risultati solo aggregati |
| Indagine di clima interna | I duplicati falsano la media; l'identificazione uccide la sincerità | Un link condiviso, nessun account, nessun invito personalizzato, soglia di reportistica applicata a ogni cella |
| Canale di segnalazione | L'esposizione di chi segnala è tutto il rischio; le segnalazioni spurie si sopportano | Codice di sblocco distribuito internamente; nessuna conservazione degli IP; un canale di risposta che non richiede un'identità |
| Domanda di contributo o di aiuto | Domande multiple fraudolente; contenuti altamente sensibili | Invio nominativo per scelta, con controllo degli accessi rigoroso e regola di conservazione per i dossier respinti |
Leggete prima la colonna centrale. In quattro di queste sei righe il duplicato è il rischio minore — è la forma generale del problema, e la ragione per cui « impedire i duplicati » non va mai risolto prima di « a quale prezzo ».
Cinque errori che rompono l'anonimato per sbaglio
- Link di invito personalizzati su un'indagine « anonima ». Il modo più comune in cui una promessa di anonimato diventa falsa. Se il link identifica il destinatario, la risposta è al massimo pseudonima.
- Conservare la corrispondenza token-persona « per sicurezza ». Riporta l'intero impianto a un impianto nominativo, e verrà richiesta appena qualcuno vorrà sollecitare chi non ha risposto.
- Registrare indirizzi IP in chiaro per prevenire abusi e poi non cancellarli mai. La finalità si esaurisce con la chiusura del modulo; i dati dovrebbero esaurirsi con essa.
- Aggiungere un CAPTCHA senza aggiornare l'informativa. Una chiamata a un terzo a ogni visualizzazione è una comunicazione, che qualcuno invii o no.
- Timestamp al secondo in una squadra piccola. Uniti a orari di lavoro noti, l'ora di un invio identifica l'autore con la stessa affidabilità di un nome — la stessa classe di falla di un incrocio demografico.
In conclusione
Risolvete i due problemi separatamente. Lo spam è volume: limiti di frequenza, campi trappola, blocchi che scadono e tetti strutturali lo gestiscono senza apprendere nulla su nessuno. I duplicati sono identità, e l'unica domanda su cui vale la pena discutere è quanta poca identità potete spendere: un marcatore del dispositivo se il rischio è un doppio clic distratto; un'impronta di rete rispettosa della riservatezza se « uno per nucleo » basta; un token monouso non collegato se serve precisione mantenendo l'anonimato; un account solo dove il processo è comunque nominativo.
E quando qualcuno chiede tutte e tre le proprietà insieme — a prova di spam, a prova di duplicati, anonimo — la risposta non è « impossibile ». È: verificate l'idoneità in un posto, accettate gli invii in un altro, e non uniteli mai.
Schweizerform applica per impostazione predefinita limiti di frequenza e blocchi automatici a scadenza sulla superficie pubblica dei moduli, offre per ciascun modulo una regola libera, una volta per dispositivo o una volta per rete, e applica l'opzione di rete con un'impronta con salt per modulo e pepper lato server che viene cancellata insieme all'invio — mai con un indirizzo IP archiviato. Sulla pagina del modulo non girano script di terze parti: il livello anti-abuso non è quindi esso stesso una comunicazione. Il quadro progettuale più ampio è in creare un modulo online sicuro e nella nostra pagina sicurezza. Per la versione più difficile del problema «una volta per persona» — un voto dei soci in cui il requisito di un voto per socio confligge con la segretezza dello scrutinio — si vedano i moduli per soci di associazioni e società.
Avvertenza: questo articolo è informazione generale e contenuto di marketing, non consulenza legale. I riferimenti alla nLPD (art. 6, 19) e al trattamento degli indirizzi IP come dati personali sono sintesi semplificate aggiornate a luglio 2026. Se una determinata misura anti-abuso sia proporzionata, e per quanto tempo i suoi dati possano essere conservati, dipende dal vostro caso: fate esaminare da consulenti qualificati gli impianti che coinvolgono dati degni di particolare protezione, obblighi di partecipazione del personale o procedure di voto.