Spam dal form contatti di PrestaShop: perché un antispam a parole vietate non funziona

di Luca Cavallini Guide tecniche
Spam dal form contatti di PrestaShop: perché un antispam a parole vietate non funziona

Due modi di perdere tempo, e il secondo è peggio

Nella casella che riceve i messaggi del form contatti finiscono due cose: le richieste dei clienti e le proposte non richieste, cioè posizionamento sui motori, link building, sviluppatori a ore, inviti a investire in criptovalute e ogni tanto un tentativo di farsi dare le credenziali del pannello.

Il primo modo di perdere tempo è leggere tutto. Il secondo, peggiore, è smettere di leggere: quando quasi tutto è spazzatura, il messaggio buono viene guardato di sfuggita. Un contatto perso non lascia un errore nei log, lascia un cliente che se ne va senza dire perché.

Perché una lista di parole vietate non funziona

La difesa più diffusa è una lista di parole: se il messaggio contiene "SEO", "gratis", "offerta", si butta. Funziona per una settimana, poi arriva il conto, perché le parole che compaiono nello spam sono le stesse che usano i clienti. "Ho visto che fate la promozione sul set di cacciaviti, la spedizione è gratis sopra i 49 euro anche per le isole?" è un cliente che sta per comprare.

Il difetto non è nella lista, è nel metodo: una parola non porta con sé l'intenzione di chi l'ha scritta. Vale anche al contrario, perché uno spam scritto bene non contiene nessuna parola sospetta. Alzando la severità si bloccano più clienti veri, abbassandola passa più spam: non esiste una taratura che risolva, perché il segnale non è quello giusto.

Perché il captcha non basta

Il captcha risolve un problema diverso e lo risolve bene: impedisce a un programma di compilare il form migliaia di volte. Non impedisce a una persona di mandare una proposta commerciale, né a un programma capace di risolverlo di fare lo stesso. Captcha, honeypot e limite di invii per IP guardano come è arrivato il messaggio; qui il problema è che cosa c'è scritto dentro.

Un modello che decide invece di scrivere

La risposta di moda a "questo messaggio è spam?" è chiedere a un modello linguistico: si scrive un prompt e si spera che il testo che torna sia interpretabile. Funziona finché un giorno il modello risponde "Direi di si, anche se dipende", e il codice che si aspettava SI o NO decide a caso.

Esiste un tipo di modello pensato per il caso opposto: non genera testo, risponde a domande tipizzate. Torna un numero per ciascuna: per una domanda si/no la probabilità che la risposta sia si, per una a scelta multipla l'opzione scelta, la probabilità di ognuna e una confidenza, cioè quanto quella scelta è netta rispetto alle altre. La funzione Antispam Jev del nostro modulo dei moduli di contatto è costruita su uno di questi modelli, Jev di TypeSafe AI.

La differenza pratica è che la decisione resta nel codice: il modello dice quanto è sicuro, che cosa farne lo decide una soglia che il negoziante può cambiare. Per ogni messaggio partono in una sola chiamata sei domande, valutate in parallelo: è pubblicità non richiesta, contiene link sospetti, è phishing, è un modello inviato in massa, quale reparto dovrebbe rispondere, è urgente.

Il punto più importante è il terzo stato. Sopra la soglia alta si agisce e il messaggio finisce in una coda di sospetti; sotto non si fa niente, passa, e la valutazione resta nel registro; in mezzo, dove il modello è incerto, serve la conferma di un secondo segnale. "Non lo so" è una risposta utile, se il codice è scritto per ascoltarla.

Che cosa abbiamo misurato

Questi numeri vengono da una nostra prova su un'installazione di sviluppo di PrestaShop 9, non da un test indipendente: dieci messaggi scritti da noi in italiano, sei legittimi e quattro indesiderati.

I sei legittimi erano scelti per essere difficili: un cliente arrabbiato che chiede il rimborso e minaccia la contestazione sulla carta, uno tutto in stampatello, uno con il link al proprio sito aziendale, uno lunghissimo e confuso, uno di due parole ("Spedite in Sicilia?") e quello pieno di "gratis", "offerta" e "promozione". Tutti e sei sono passati, con una probabilità di pubblicità non richiesta rimasta al 2% o sotto. I quattro indesiderati (proposta SEO, phishing con link accorciato, invito a investire, modello generico inviato a tappeto) sono finiti tutti nella coda dei sospetti, fra il 98% e il 99%.

Le dieci chiamate hanno impiegato fra 535 e 663 millisecondi, con una media di 596 ms, consumando circa 900-1.240 token per messaggio. Con la funzione spenta lo stesso invio ha impiegato 95 ms: il mezzo secondo in più è il prezzo della valutazione, e si paga solo se la si accende.

La prova che ci interessava di più era un'altra: abbiamo fatto puntare il modulo a un indirizzo che non risponde. Dopo 4.057 millisecondi, cioè il timeout configurato, il messaggio è stato consegnato normalmente e l'errore è finito nel registro. Stessa cosa senza chiave e con una chiave sbagliata.

Quello che non fa, apposta

Non cancella niente. Lo spam riconosciuto finisce in una coda che il negoziante apre, legge e da cui recupera un messaggio con un clic, e in quel caso parte la notifica trattenuta. Al visitatore compare comunque la schermata di conferma: a chi manda spam non si spiega come è stato filtrato, e un cliente finito lì per errore non si vede respingere.

Non scavalca le scelte del negoziante: l'instradamento sceglie fra i reparti davvero configurati nel modulo e interviene solo dove prima si sarebbe usato l'indirizzo generico. Sotto la soglia di confidenza resta il destinatario predefinito.

I limiti, detti prima

Il testo del messaggio viene inviato a un fornitore terzo negli Stati Uniti: è un trasferimento di dati personali fuori dall'Unione Europea e va scritto nell'informativa privacy del negozio. Per questo la funzione è spenta di fabbrica, nel pannello c'è scritto per esteso che cosa esce e verso chi, l'invio dell'indirizzo email di chi scrive è disattivato salvo scelta esplicita, e il modulo dà una frase pronta da incollare nell'informativa in cinque lingue: un testo da adattare e far controllare, non un parere legale.

Il servizio è recente e ha un costo a consumo: quando il credito finisce smette di rispondere, e i messaggi passano come con qualsiasi altro errore. E dieci messaggi dicono che su quei dieci il filtro non ha sbagliato, non che non sbaglierà mai: per questo esiste la coda, e per questo ogni valutazione viene registrata con probabilità, confidenza, tempo e token.

Dove sta

Antispam Jev è una funzione del nostro modulo dei moduli di contatto per PrestaShop, non un modulo a parte: chi lo usa già la trova nella configurazione, spenta. Se il problema che riconoscete è il secondo di questo articolo, il messaggio vero che si perde in mezzo agli altri, è quello per cui è nata.

Moduli di Contatto Avanzati (Advanced Contact Forms)Crea più form di contatto avanzati con builder di campi personalizzati, instradamento per reparto, allegati…49,99 €Vedi il prodotto

Lascia un commento

I commenti sono moderati prima della pubblicazione.

← Blog

Caricamento in corso ...
Torna all'inizio