Come bloccare lo spam dei formulari PrestaShop: CAPTCHA e bot

Un CAPTCHA attivo non ferma un bot che invia direttamente al controller. Proteggi ogni formulario sul server, regola i limiti e leggi i rifiuti.

Comment bloquer le spam des formulaires PrestaShop : CAPTCHA et bots

Il formulario di contatto riceve ogni notte messaggi identici, in inglese, con un link. Le registrazioni creano account con indirizzi improbabili e la newsletter accumula indirizzi che non hanno mai chiesto nulla. Eppure il CAPTCHA è attivo. Quasi sempre protegge solo la visualizzazione del formulario: un bot che invia una richiesta POST direttamente al controller non la carica mai. Questa guida spiega come riportare il controllo sul server, quali formulari proteggere, come configurare il modulo senza perdere clienti e come leggere ciò che viene rifiutato.

Perché lo spam arriva ancora con il CAPTCHA attivo?

Perché il CAPTCHA protegge la visualizzazione del formulario, non la sua elaborazione. Un bot che conosce l’indirizzo del controller invia i campi attesi direttamente al server, senza browser e senza widget.

I controller di contatto, registrazione e newsletter sono pubblici e facili da identificare. Basta una richiesta POST ben formata: il widget non viene mai caricato, il token del fornitore non viene mai richiesto e il messaggio arriva nella casella. Per questo i negozi ricevono ancora spam con reCAPTCHA attivo.

Quali formulari protegge il modulo?

Il modulo Antispam per formulari: CAPTCHA e blocco dei bot protegge i sette formulari nativi di PrestaShop: contatto, creazione account, accesso, formulario cliente dell’ordine, password dimenticata, iscrizione alla newsletter e recensioni dei prodotti.

All’installazione questi sette formulari passano in modalità Protetto, senza CAPTCHA esterno. La pagina Formulari li elenca con modalità, CAPTCHA, tempo minimo, limiti, data dell’ultimo invio e stato Campi nella pagina. Modifica apre le impostazioni di un formulario; Proteggi tutto e Osserva tutto cambiano la modalità di tutta la lista.

Per i formulari di altri moduli ci sono due soluzioni. Una regola punta a un controller, con il campo che segna l’invio e il formato di risposta atteso; Aggiungi una regola la crea, fino a 20 regole per negozio. Una regola pronta copre gli Avvisi di disponibilità dei prodotti (ps_emailalerts). L’API PHP documentata permette a un modulo di chiamare i controlli dal proprio codice.

L’ordine in sé non viene mai filtrato: né il carrello, né il pagamento, né la conferma, né gli indirizzi. Anche la pagina dell’identità e il passo di reimpostazione della password non sono protetti.

Per chi è fatto questo modulo

  • Un negozio che riceve spam su contatto, registrazione o newsletter nonostante un CAPTCHA già installato.
  • Un negozio che vuole vedere cosa viene rifiutato, e perché, invece di scoprire il danno nella casella di posta.
  • Un’agenzia che gestisce più negozi e vuole impostare la protezione negozio per negozio.

Per chi non è fatto

  • Un negozio senza formulari esposti: non ci sarebbe nulla da proteggere.
  • Un commerciante che cerca un firewall applicativo o una protezione dagli attacchi denial of service: non è il ruolo del modulo.
  • Un commerciante che si aspetta zero spam: nessun modulo può prometterlo, e uno spammer umano può compilare correttamente un formulario.
La pagina Formulari: ogni formulario nativo o regola mostra modalità, CAPTCHA, tempo minimo e limiti.
La pagina Formulari: ogni formulario nativo o regola mostra modalità, CAPTCHA, tempo minimo e limiti.

Come si installa e si regola la protezione passo per passo?

Installa il modulo, attiva la licenza, lascia prima tutti i formulari in osservazione e passa alla protezione formulario per formulario dopo aver letto il registro.

  1. Controlla i requisiti: PrestaShop 1.7.8, 8.0+ o 9.0+, PHP 7.4 o superiore.
  2. Installa l’archivio dal gestore dei moduli. I sette formulari nativi vengono creati per ogni negozio, si aggiunge la lista dei domini usa e getta e si creano le tabelle del modulo.
  3. Apri Configura e attiva la licenza WePresta. Finché la licenza non è valida, il modulo resta disattivato e i formulari non vengono controllati.
  4. Programma l’attività giornaliera di manutenzione, con l’indirizzo indicato nella configurazione o la riga di comando fornita. Svuota il registro, i contatori, i blocchi temporanei scaduti e gli altri dati scaduti.
  5. Apri Formulari e premi Osserva tutto. Tutti i controlli vengono eseguiti, nulla viene rifiutato e il registro annota ciò che sarebbe stato bloccato.
  6. Lascia passare qualche giorno, poi apri il Registro dei tentativi bloccati e la pagina Dashboard. I motivi dicono se il blocco colpirebbe bot o clienti, soprattutto dietro un indirizzo condiviso da un’azienda o da un operatore mobile.
  7. Esegui Testa la mia protezione. Lo strumento legge la pagina del formulario come un visitatore, controlla i campi, il token e lo script, prova un invio diretto senza campi per verificare che verrebbe rifiutato e verifica le chiavi del fornitore scelto.
  8. Passa alla protezione con Proteggi tutto, o formulario per formulario iniziando da contatto e newsletter, poi registrazione, accesso e recensioni. Lascia il formulario cliente dell’ordine con le sue soglie ampie e senza tempo minimo.
  9. Aggiungi un CAPTCHA solo se un formulario resta nel mirino, dopo aver inserito le chiavi e verificato il pulsante Test. Metti gli indirizzi dei partner e degli strumenti di monitoraggio nella lista dei consentiti prima di stringere i limiti.

Il modulo non scrive nessun file del tema: Classic e Hummingbird funzionano così come sono. I diritti dei dipendenti si dividono tra consultazione, gestione e dati, controllati sul server. La documentazione descrive ogni impostazione, compreso il comportamento quando un fornitore non risponde.

Come si legge il registro e si agisce su un rifiuto?

Per ogni tentativo il registro indica formulario, risultato, motivo, data, indirizzo mascherato e dominio e-mail, con azioni immediate sulla riga.

I motivi sono espliciti. Nel registro trovi Campo trappola compilato, Inviato troppo velocemente, Campi di protezione mancanti e Troppi invii da questo indirizzo. Altre righe mostrano CAPTCHA non riuscito, Indirizzo nella lista di blocco, E-mail nella lista di blocco o Il dominio e-mail non può ricevere e-mail. Ogni riga permette di bloccare l’indirizzo o il suo intervallo, consentire l’indirizzo, bloccare il dominio e-mail o revocare un blocco. Puoi esportare il registro filtrato in CSV e svuotarlo.

Il registro dei tentativi bloccati: ogni rifiuto porta il motivo, l’indirizzo mascherato, il dominio e-mail e le azioni sulla riga.
Il registro dei tentativi bloccati: ogni rifiuto porta il motivo, l’indirizzo mascherato, il dominio e-mail e le azioni sulla riga.

La pagina Dashboard offre la vista d’insieme: Consentito, Bloccato, Tasso di blocco, Sarebbe stato bloccato, Consentito senza controllo e Esente, con un grafico di 30 giorni e il dettaglio per formulario e per motivo. Un picco su un formulario si nota subito.

Il dashboard: invii consentiti e bloccati, tasso di blocco e grafico degli ultimi 30 giorni.
Il dashboard: invii consentiti e bloccati, tasso di blocco e grafico degli ultimi 30 giorni.

La conservazione è di 30 giorni per impostazione predefinita e si regola in Registro e privacy. L’indirizzo non viene conservato in chiaro: è mascherato e un’impronta con hash serve alle liste e ai limiti. Si conserva il dominio e-mail, mai l’indirizzo completo.

Un caso concreto: un formulario di contatto sommerso di notte

Il formulario di contatto riceve ogni notte una decina di messaggi identici. Il registro mostra Campo trappola compilato sullo stesso intervallo di indirizzi. Blocchi l’intervallo con un clic dalla riga, poi controlli il giorno dopo che gli invii dei tuoi clienti passino ancora. Se viene fermato un messaggio legittimo, la lista dei consentiti lo ripristina senza disattivare la protezione.

Serve un CAPTCHA esterno e quale scegliere?

Non per impostazione predefinita: i controlli sul server funzionano senza chiave né account di terzi, e un CAPTCHA esterno si aggiunge solo a un formulario ancora nel mirino.

Quando lo vuoi, la scelta si fa formulario per formulario: Google reCAPTCHA v2 con casella o invisibile, reCAPTCHA v3 con soglia di punteggio, Cloudflare Turnstile, hCaptcha in versione normale, compatta o invisibile, oppure Friendly Captcha. Inserisci le tue chiavi in Configura; il modulo non le mostra mai e il pulsante Test verifica che siano accettate e che il dominio sia autorizzato.

Per impostazione predefinita lo script del fornitore viene caricato solo nelle pagine che contengono un formulario protetto da quel fornitore, al primo contatto con il formulario. Una pagina senza formulario non carica nulla. Se il fornitore non risponde, scegli se lasciar passare l’invio, registrato come non controllato, o rifiutarlo.

Anche il consenso si regola: lo script può attendere l’accordo del visitatore, con il modulo Cookie RGPD o un altro strumento di consenso. Senza accordo, il formulario resta protetto dai controlli nativi, oppure mostra un messaggio se hai scelto di chiedere l’accordo.

Un CAPTCHA esterno ha condizioni e informativa sulla privacy proprie. Sta a te citarla nella tua informativa e scegliere il consenso adatto; il modulo non certifica la tua conformità al RGPD.

Cosa fa il modulo e quali sono i suoi limiti?

Il modulo riduce gli invii automatizzati e documenta ogni rifiuto, ma non promette zero spam e non sostituisce un firewall o un parere legale.

  • Nessun risultato promesso. Uno spammer umano può compilare correttamente un formulario. Il modulo rende gli invii automatizzati costosi e visibili; non li elimina tutti.
  • L’ordine resta fuori dal filtro. Carrello, pagamento, conferma e indirizzi non vengono controllati. Il formulario cliente dell’ordine mantiene soglie ampie.
  • I visitatori condividono indirizzi. Un limite troppo stretto può penalizzare un’azienda o un operatore mobile. La modalità osservazione e la lista dei consentiti servono a verificare prima di stringere.
  • Nessuna certificazione RGPD. Il modulo aiuta a limitare i dati raccolti e offre hook di esportazione e cancellazione, ma non sostituisce la tua informativa sulla privacy né un parere legale.
  • Una licenza valida. Senza licenza valida il modulo si disattiva: i formulari non vengono più controllati, nessun CAPTCHA viene mostrato e nulla viene registrato. Impostazioni, liste e registro restano.
  • Chiamate di rete. La verifica di un CAPTCHA, il controllo MX e quello dei crawler dei motori di ricerca usano chiamate in uscita; se il fornitore di un CAPTCHA non risponde, si applica il comportamento scelto, e una ricerca DNS fallita non rifiuta mai un invio.

In una configurazione multinegozio, impostazioni, formulari, registro e statistiche restano di ogni negozio, e le voci delle liste possono essere condivise. Se il tuo formulario di contatto viene da un altro modulo, la scheda del formulario di contatto dinamico mostra un caso comune; per la sicurezza generale del negozio, un audit di sicurezza completa la protezione dei formulari.

Domande frequenti

Perché il mio CAPTCHA non blocca gli invii diretti?
Il CAPTCHA viene eseguito nel browser del visitatore. Un bot che invia direttamente al controller non carica la pagina, quindi nemmeno il widget, e non ha alcun token da presentare. Il server riceve una richiesta ben formata e la elabora. Il modulo controlla l’invio prima di quella elaborazione: un token firmato assente, un campo trappola compilato o un tempo troppo breve bastano a rifiutarlo.
Basta un campo trappola per proteggere un formulario?
Da solo, no. Un campo trappola ferma i bot che compilano tutti i campi, ma un bot scritto per il tuo formulario può ignorarlo. Il modulo lo combina con un token firmato, un tempo minimo di compilazione, un limite per indirizzo e per e-mail e il rifiuto dei duplicati. È questo insieme a rendere costoso l’invio automatizzato, non un singolo trucco.
Posso bloccare un indirizzo IP o un dominio e-mail?
Sì. Le liste accettano indirizzi IPv4 e IPv6, intervalli CIDR, indirizzi e-mail, domini e motivi con carattere jolly. Puoi aggiungere una voce a mano, con un’importazione CSV o direttamente da una riga del registro. Esistono anche due liste consentiti, e un indirizzo presente sia tra i bloccati sia tra i consentiti viene accettato: l’autorizzazione vince sul blocco.
Bisogna modificare il tema per aggiungere la protezione?
No. Il modulo inserisce i suoi campi nascosti e il suo script nella pagina al momento del rendering e non scrive nessun file del tema; Classic e Hummingbird funzionano così come sono. Finché un formulario non ha mai inviato i campi del modulo, un invio senza token viene solo registrato, per non perdere messaggi mentre controlli la pagina con Testa la mia protezione.
Un CAPTCHA esterno è conforme al RGPD?
Dipende dal fornitore, dalle sue condizioni e dal consenso che metti in atto. Il modulo può attendere l’accordo del visitatore prima di caricare lo script, con il modulo Cookie RGPD o un altro strumento di consenso; senza accordo, i controlli nativi restano attivi. Aiuta a limitare i dati raccolti, ma non certifica la tua conformità e non sostituisce un parere legale.

Prodotti di questo articolo

Trovate il modulo di cui il vostro negozio ha bisogno

Scopri i moduli