I 5 essenziali: li faccia per primi
- Mantenga aggiornati il core di WordPress, i temi e i plugin. I plugin vulnerabili sono il vettore di attacco numero 1. Attivi gli aggiornamenti automatici delle versioni minori (WordPress 5.6+ lo fa per impostazione predefinita). Per le versioni maggiori, aggiorni entro 7 giorni dal rilascio. Per i plugin, attivi l'aggiornamento automatico di quelli fidati; controlli manualmente le note di versione dei plugin critici.
- Usi password forti e uniche per ogni account WordPress. Soprattutto quelle di amministratore. Usi un gestore di password (1Password, Bitwarden). Disattivi il nome utente «admin»: crei un nuovo amministratore ed elimini quello vecchio.
- Attivi l'autenticazione a due fattori. Usi Wordfence Login Security (gratuito) o il nostro Generatore di QR 2FA con qualsiasi app TOTP. La 2FA sconfigge più del 99% degli attacchi di credential stuffing.
- Installi un plugin di sicurezza affidabile. Wordfence (la versione gratuita basta per la maggior parte dei siti) o Solid Security. Non ne accumuli diversi: entrano in conflitto. Il plugin gestisce il limite di tentativi di accesso, il monitoraggio dell'integrità dei file e la scansione del malware.
- Backup giornalieri fuori sito. UpdraftPlus → Dropbox/Google Drive. Faccia il backup prima di averne bisogno. Provi il processo di ripristino almeno una volta.
Le 10 successive: misure aggiuntive ad alto impatto
- Forzi l'HTTPS. Let's Encrypt è gratuito su ogni host moderno. Reindirizzi HTTP a HTTPS a livello di server.
- Cambi il prefisso delle tabelle del database. WordPress usa wp_ per impostazione predefinita; lo cambi con qualcosa di personalizzato durante l'installazione. Non blocca gli attacchi, ma ostacola alcuni pattern di attacco.
- Disattivi XML-RPC se non lo usa. XML-RPC è un comune vettore di amplificazione della forza bruta. Se non usa l'app mobile di Jetpack né la pubblicazione remota, lo disattivi tramite .htaccess o un plugin.
- Limiti i tentativi di accesso. Wordfence lo fa automaticamente. Evita il credential stuffing per forza bruta.
- Ruoti le chiavi/salt di autenticazione di WordPress. Usi il nostro Generatore di Salt di WordPress. Li ruoti dopo qualsiasi sospetto di compromissione, dopo aver eliminato un amministratore compromesso e ogni 6-12 mesi di routine.
- Usi SSH o SFTP per trasferire i file, mai FTP semplice. L'FTP trasmette le credenziali in testo in chiaro.
- Restringa l'accesso a wp-admin per IP se possibile. Se il suo team usa IP fissi (ufficio, VPN), limiti wp-admin solo a quegli IP. Tramite .htaccess o la configurazione di Nginx.
- Disattivi la modifica dei file in wp-config.php. Aggiunga:
define('DISALLOW_FILE_EDIT', true);Evita che gli attaccanti modifichino temi/plugin dal pannello se compromettono un account. - Nasconda il numero di versione di WordPress. Rimuova il meta tag generator. Non blocca gli attacchi, ma riduce il fingerprinting.
- Blocchi i permessi dei file. File 644, directory 755, wp-config.php 600. La maggior parte degli host gestiti lo fa automaticamente; su un VPS, lo configuri esplicitamente.
Rifinitura: utile ma non critica
- URL di accesso personalizzato (ad es. WPS Hide Login). Riduce soprattutto il rumore del traffico dei bot; non è vera sicurezza.
- CAPTCHA nei moduli di accesso. Un lieve attrito per gli attacchi automatizzati.
- Disattivi l'esecuzione di PHP in /uploads/. Evita l'esecuzione di shell PHP caricate.
- Usi il WAF di Cloudflare (livello gratuito). Filtra il traffico malevolo prima che raggiunga il suo server.
- Configuri un avviso via email per l'amministratore per gli aggiornamenti di plugin/core.
- Usi il preload HSTS per forzare l'HTTPS a livello di browser.
- Disattivi l'enumerazione degli utenti tramite l'API REST (Solid Security o Wordfence lo gestiscono).
- Usi le intestazioni di Content Security Policy (CSP).
- Disattivi la navigazione delle directory (la maggior parte degli host lo fa per impostazione predefinita).
- Monitori il tempo di attività + l'integrità con un servizio esterno (livello gratuito di UptimeRobot + Sucuri SiteCheck settimanale).
- Limiti i ruoli utente al privilegio minimo. La maggior parte dei collaboratori non ha bisogno di un accesso di livello editor.
- Crittografia dei backup del database (UpdraftPlus Premium la offre).
- Hosting delle immagini fuori dal dominio tramite CDN (riduce la superficie di attacco).
- Revisione periodica del registro di audit della sicurezza.
- Test di penetrazione annuale se il sito genera entrate significative.
Miti sulla sicurezza di WordPress: li ignori
Diverse misure di «sicurezza» molto consigliate offrono una protezione reale minima: (1) «Nascondere la versione di WordPress»: conoscere la sua versione aiuta lievemente gli attacchi mirati, ma la soluzione reale è aggiornare, non nascondere. (2) «Spostare wp-config.php sopra public_html»: apporta essenzialmente zero beneficio di sicurezza; il file è già protetto da .htaccess. (3) «Disattivare l'API REST»: rompe molti plugin e blocca poco. Limiti invece endpoint specifici. (4) «Accumulare diversi plugin di sicurezza»: entrano in conflitto e si sovrappongono. Un plugin affidabile (Wordfence o Solid Security) copre ciò che farebbero in tre. (5) «Rinominare wp-login.php»: sicurezza tramite oscurità; gli attaccanti trovano facilmente il nuovo URL tramite i reindirizzamenti.
Se è stato hackerato: lista di ripristino
- Non vada nel panico; non elimini subito le cose. Faccia prima un'istantanea dello stato attuale per l'analisi forense.
- Metta il sito offline (plugin di modalità manutenzione o reindirizzamento .htaccess a una pagina statica).
- Cambi tutte le password di amministratore e ruoti i salt di WordPress.
- Verifichi gli account utente: elimini subito gli account di amministratore non riconosciuti.
- Esegua una scansione alla ricerca di malware con Wordfence Premium o Sucuri.
- Confronti i file attuali con un download pulito di WordPress: il diff rivela i file del core modificati.
- Controlli la tabella wp_options del database alla ricerca di voci inattese (spesso contiene JS iniettato).
- Ripristini dal backup pulito più recente (è per questo che i backup giornalieri contano).
- Una volta ripristinato, verifichi ogni plugin: elimini quelli non usati, li aggiorni tutti e sostituisca quelli con CVE pubblici.
- Aggiorni il core di WordPress all'ultima versione.
- Riabiliti il sito e vigili sulla reinfezione per 30 giorni.