Un modulo di registrazione è la cosa più economica da attaccare su internet. Non c'è una password da indovinare né una carta da rubare, e ogni account che crea vale qualcosa per qualcuno: una prova gratuita da rivendere, un bonus referral da farmare, una casella per lo spam o un account dormiente per frodi future. Se le tue registrazioni sono schizzate da un giorno all'altro e il tasso di attivazione è crollato, probabilmente c'è uno script che compila il modulo.
Quanto ti costano le registrazioni false
- Denaro: crediti gratuiti, calcolo delle prove, costi di verifica via SMS ed email, premi referral.
- Dati: un funnel pieno di account che non convertiranno mai nasconde cosa fanno i clienti veri.
- Reputazione: le email di verifica verso indirizzi inventati o rubati rimbalzano e danneggiano il tuo sender score.
- Abusi futuri: gli account creati oggi verranno usati per spam, scraping o card testing il mese prossimo.
Perché un CAPTCHA non è la risposta
I servizi che risolvono CAPTCHA rispondono ai puzzle per molto meno di un centesimo l'uno, usando persone o modelli, quindi un attaccante determinato paga poco e passa. I tuoi visitatori veri pagano il prezzo pieno: ogni puzzle ne perde qualcuno, ancora di più da smartphone. Un CAPTCHA sposta il costo sulla parte sbagliata.
Cosa tradisce una registrazione automatizzata
Nessun segnale da solo è una prova, e tutto ciò che un attaccante controlla, come lo User-Agent, si può falsificare. Ciò che per gli script è difficile è essere coerenti su molti segnali contemporaneamente, e comportarsi come una persona nel tempo.
- Flag di automazione. I browser headless e pilotati lasciano ancora tracce:
navigator.webdriver, una GPU software, funzionalità del browser mancanti. - Incoerenze. Uno User-Agent che dichiara Windows su un browser che riporta Linux, un fuso orario che non corrisponde alla rete, client hint che contraddicono gli header.
- La rete. Registrazioni da provider di hosting invece che da case e telefoni. Da sola è un'evidenza debole: anche chi usa una VPN è una persona vera.
- Fan-out. Un dispositivo, un token o una subnet che creano molti account in pochi minuti.
- Nessuna pagina. Una richiesta all'endpoint di registrazione da un client che non ha mai caricato la pagina di registrazione.
Decidi sul server, prima che l'account esista
La decisione va presa dove l'account viene creato, non nel browser, dove uno script può saltarla. Prima di inserire l'utente, chiedi una decisione sulla richiesta, con un timeout breve:
POST /v1/decide
{ "ip": "203.0.113.10", "user_agent": "Mozilla/5.0 …",
"token": "<_kz cookie>", "path": "/signup" }
Poi agisci in base alla classe che ricevi, dalla più certa alla meno certa:
- bot high: rifiuta la registrazione.
- bot: crea l'account ma trattieni i crediti della prova finché l'email non è verificata, oppure chiedi un numero di telefono.
- unknown, human, human high: lascia passare come al solito.
Trattenere la ricompensa, invece di bloccare il modulo, è ciò che rende le registrazioni false non più convenienti, senza respingere un cliente vero la cui unica colpa era una VPN.
Fail open
Se il controllo è lento o non risponde, lascia passare la registrazione. Qualche account falso durante un disservizio costa molto meno di una pagina di registrazione che smette di funzionare. Ne abbiamo scritto di più in perché un controllo bot deve essere fail open.