Moduli di contatto WordPress: una checklist di sicurezza
Contact Form 7, WPForms, Gravity Forms, Ninja Forms o Fluent Forms – il plugin conta meno di come viene configurato e mantenuto. Ecco che cosa controllare, e che cosa ricontrollare dopo ogni aggiornamento.
La maggior parte dei siti WordPress utilizza uno di pochi plugin per moduli: Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms e pochi altri. Ognuno di essi può essere gestito in modo sicuro o lasciato completamente aperto. La differenza raramente sta nel plugin stesso, bensì nelle sue impostazioni, nei componenti aggiuntivi che lo circondano, nel modo in cui la posta lascia il server e in ciò che accade ai messaggi una volta arrivati.
- Mantenga aggiornati il plugin per moduli e ogni componente aggiuntivo, ed elimini quelli che non usa più.
- Attivi l’antispam del plugin – honeypot, integrazione CAPTCHA, Akismet dove opportuno – e verifichi che funzioni davvero.
- Invii le notifiche tramite SMTP autenticato da un indirizzo del proprio dominio.
- Limiti i caricamenti per tipo e dimensione, e impedisca che i file caricati siano elencati o consultabili pubblicamente.
- Tenga l’indirizzo e-mail del destinatario fuori dalla pagina e dal suo codice sorgente.
- Conservi solo le voci che Le servono, e solo per il tempo necessario.
- Esegua un breve controllo dopo ogni aggiornamento di WordPress, del tema o di qualsiasi plugin.
Aggiornamenti: il plugin per moduli e tutto ciò che lo circonda
I plugin per moduli sono bersagli frequenti perché accettano dati da chiunque su internet. Le correzioni di sicurezza arrivano come normali aggiornamenti, quindi aggiorni tempestivamente – e non solo il plugin principale. I componenti aggiuntivi per pagamenti, caricamenti, connessioni a CRM, logica condizionale o ulteriori provider di CAPTCHA sono codice separato con vulnerabilità proprie. Lo stesso vale per i plugin installati una volta per una prova e poi dimenticati. Disattivarli non basta: i plugin disattivati restano sul server, e in alcuni casi i loro file possono essere raggiunti direttamente. Se non lo usa, lo elimini.
Antispam: lo attivi, poi dimostri che funziona
La maggior parte dei plugin per moduli ha proprie opzioni antispam o si integra con servizi esterni: un campo honeypot che i bot compilano e le persone non vedono mai, CAPTCHA come reCAPTCHA, hCaptcha o Cloudflare Turnstile, e Akismet, che confronta il contenuto dei messaggi con un database di spam. Le opzioni variano a seconda del plugin e della versione, quindi controlli le impostazioni invece di darle per scontate. I CAPTCHA esterni caricano script di terze parti, e Akismet invia il contenuto inviato a un servizio esterno – entrambi vanno menzionati nella Sua informativa privacy e, a seconda della Sua configurazione, nella Sua gestione dei consensi.
Il problema più comune è una protezione attivata ma non funzionante. Un CAPTCHA che usa chiavi di test pubbliche lascia passare tutto. Un widget il cui script è bloccato da un plugin di caching o di ottimizzazione, o da un errore JavaScript, non ferma nulla. Un campo honeypot privo degli stili che lo nascondono viene letto dagli screen reader e compilato dai visitatori reali. Quindi, dopo ogni modifica, apra il modulo in una finestra privata, controlli la console del browser e il codice sorgente della pagina e invii un messaggio di prova. Se desidera una protezione che non dipenda da Google, il plugin WordPress gratuito di formexposed aggiunge honeypot, controllo dei tempi e proof-of-work e ricontrolla il sito dopo gli aggiornamenti dei plugin – un’opzione tra le tante.
Posta: come viene inviata e dove va
Per impostazione predefinita, WordPress affida la posta alla funzione mail di PHP del server, e su molti hosting questi messaggi sono autenticati male e finiscono nello spam – o spariscono silenziosamente. Invii invece tramite un plugin SMTP o il servizio di posta del Suo hosting, utilizzando una vera casella di posta con nome utente e password e un indirizzo mittente del proprio dominio, ad esempio un indirizzo forms@ dedicato. I record SPF, DKIM e DMARC del dominio devono coprire questo mittente. Non inserisca l’indirizzo del visitatore nel campo From: non è il Suo dominio, quindi il messaggio non può superare l’allineamento DMARC e, a seconda della policy del dominio del visitatore, finisce nello spam o viene rifiutato. Lo imposti come Reply-To, e potrà comunque rispondere con un clic.
L’indirizzo del destinatario va nelle impostazioni del plugin, non nella pagina. Controlli il codice sorgente della Sua pagina dei contatti: un link mailto accanto al modulo, o un campo nascosto contenente l’indirizzo del destinatario, consegna quell’indirizzo a ogni bot che raccoglie indirizzi. Nei moduli più vecchi o realizzati su misura può andare anche peggio – se il server si fida di un campo nascosto con il destinatario, chiunque può modificarlo e usare il Suo modulo per inviare posta a indirizzi arbitrari.
Caricamenti e voci salvate
Il caricamento di file è la funzione più rischiosa di un modulo, quindi si chieda innanzitutto se Le serve davvero. Se sì, consenta solo i tipi che si aspetta effettivamente – ad esempio PDF e i formati di immagine comuni – invece di bloccarne alcuni pericolosi, e imposti un limite di dimensione. Verifichi dove il plugin salva i caricamenti: non devono essere elencabili in una directory pubblica e idealmente non devono essere raggiungibili affatto a un indirizzo indovinabile. Li elimini una volta gestiti, oppure li invii come allegati invece di conservarli sul server.
Molti plugin per moduli o i loro componenti aggiuntivi salvano ogni invio nel database di WordPress, spesso spam compreso. È un utile backup quando la posta non funziona, ma anche una pila crescente di dati personali. In base al principio GDPR di limitazione della conservazione (Art. 5(1)(e)), tali dati non dovrebbero essere conservati più a lungo del necessario. Decida se Le servono le voci salvate, quali campi e per quanto tempo, poi utilizzi l’impostazione di cancellazione automatica del plugin, se esiste, o cancelli regolarmente le voci vecchie. I backup del database contengono gli stessi dati.
Dopo ogni aggiornamento
- 1Apra la pagina dei contatti in una finestra privata: il modulo e il relativo elemento antispam vengono visualizzati correttamente, e la console del browser non mostra errori.
- 2Visualizzi il codice sorgente della pagina: il campo honeypot e lo script del CAPTCHA sono ancora presenti, l’indirizzo del destinatario no.
- 3Invii un messaggio di prova: arriva nella casella di posta, non nello spam, e gli header mostrano SPF, DKIM e DMARC superati.
- 4Controlli le impostazioni che contano: destinatario, indirizzo mittente, tipi e dimensioni di caricamento consentiti, per quanto tempo vengono conservate le voci.
- 5Verifichi che il link all’informativa privacy ed eventuali testi di consenso siano ancora mostrati presso il modulo.
- 6Annoti la data e che cosa ha controllato, così da sapere quando il modulo ha funzionato l’ultima volta in modo dimostrabile.
Una volta diventato routine, richiede poco tempo e intercetta proprio i guasti silenziosi che altrimenti passano inosservati per settimane. Per uno sguardo dall’esterno, una verifica gratuita su formexposed.com esamina le pagine pubbliche dei moduli di un sito senza inviare nulla e mostra se la protezione che si aspetta è presente e configurata in modo efficace – senza bisogno di un account.