Scoprire che il proprio sito WordPress è stato hackerato è uno di quei momenti in cui lo stomaco affonda. Il sito è offline, i clienti non riescono ad accedere, Google mostra un avviso inquietante nei risultati di ricerca.
Nella maggior parte dei casi il sito si recupera completamente — a patto di agire con metodo e senza farsi prendere dal panico.
In questa guida trovi la procedura in 7 fasi che uso quando intervengo su un WordPress compromesso: dall’isolamento iniziale fino alla richiesta di revisione a Google. Ogni passo è in ordine preciso perché l’ordine conta — saltare o invertire le fasi è uno degli errori più comuni che trasforma un problema risolvibile in un disastro.
La procedura in sintesi: isola il sito e attiva la manutenzione → fai un backup forense dell’installazione compromessa → scansiona con Wordfence e individua il malware → ripulisci file, database e backdoor → cambia tutte le credenziali e rigenera le secret key → applica l’hardening per chiudere le porte di ingresso → richiedi la revisione a Google Search Console.
Come capire se il tuo sito WordPress è stato davvero hackerato
Non sempre è ovvio. A volte il sito sembra normale ma qualcosa non torna — un redirect strano, un calo di traffico improvviso, una notifica dell’hosting. A volte invece è inequivocabile. I segnali da cercare sono due tipi: quelli che vedi subito e quelli che restano nascosti per settimane.
Segnali visibili
- Reindirizzamento verso altri siti: il dominio porta su pagine di spam, siti per adulti o shop fasulli. Spesso accade solo da mobile o solo al primo accesso.
- Homepage sostituita: una pagina statica con messaggi degli hacker o contenuti estranei al posto del tuo sito.
- Avviso Google nella SERP: il testo “Questo sito potrebbe essere stato violato” o “Il sito che vuoi visitare potrebbe contenere malware” appare sotto il titolo.
- Impossibilità di accedere alla dashboard: le credenziali non funzionano più o l’account admin è stato cancellato.
- Email di spam inviate dal tuo dominio: ricevi segnalazioni da contatti che hanno ricevuto messaggi mai inviati da te.
Segnali nascosti (i più pericolosi)
Gli attacchi più sofisticati restano invisibili a occhio nudo per settimane o mesi. L’hacker non ha interesse a farti sapere di essere entrato — preferisce usare il tuo server per inviare spam, ospitare pagine di phishing o minare criptovalute. Cerca questi segnali:
- Google Search Console: controlla la sezione Problemi di sicurezza. Google spesso individua il malware prima che tu te ne accorga.
- File PHP anomali: file con nomi casuali o date di modifica recenti in cartelle come /wp-content/uploads/ dove non dovrebbe esserci codice PHP.
- Nuovi utenti admin non creati da te: controlla Utenti → Tutti gli utenti nella dashboard.
- Calo improvviso del traffico organico: Google penalizza i siti compromessi rimuovendoli o abbassandoli drasticamente nei risultati.
- Notifica dall’hosting: molti provider monitorano i siti per attività anomale e ti avvisano via email.
⚠️ Attenzione — errori che peggiorano la situazione. Cosa NON fare quando scopri l’attacco
- Non eliminare subito i file sospetti senza prima fare un backup: potresti cancellare prove utili per capire il vettore di attacco.
- Non ripristinare immediatamente dal backup senza capire come è avvenuta la violazione: il sito verrebbe reinfettato nel giro di ore.
- Non cambiare solo la password dell’admin: tutte le credenziali vanno cambiate.
Fase 1 — Isola e metti in sicurezza il sito
Primo obiettivo: togliere il sito dalla vista dei visitatori senza spegnerlo del tutto. Lavori sull’installazione, i visitatori vedono una pagina di manutenzione, e non stai servendo malware a nessuno nel frattempo.
- Attiva la modalità manutenzione tramite il tuo hosting (cPanel, Plesk, o direttamente dal provider) oppure tramite un plugin di manutenzione se riesci ancora ad accedere alla dashboard.
- Se non riesci ad accedere alla dashboard, crea un file index.html vuoto con la scritta “Sito in manutenzione” nella root via FTP, rinominando temporaneamente il file index.php originale.
- Disattiva la cache e la CDN (Cloudflare, Bunny, ecc.) per evitare che le versioni infette vengano servite da cache.
- Blocca l’accesso a wp-login.php via .htaccess o dal pannello hosting per impedire ulteriori accessi non autorizzati durante la bonifica.
Fase 2 — Fai un backup forense (anche del sito infetto)
Fare il backup di un sito infetto serve a due cose concrete. Prima: i file di log conservati nell’archivio ti diranno come è entrato l’hacker — informazione preziosa per non riaprire la stessa porta dopo la bonifica. Seconda: se durante la pulizia combini un casino, hai ancora uno stato a cui tornare.
Scarica via FTP l’intera directory del sito e fai un dump completo del database tramite phpMyAdmin o da riga di comando. Conserva questo archivio separato dal backup pulito.
Suggerimento operativo
I file di log del server — access.log e error.log — sono la mappa dell’attacco. Cerca le prime richieste anomale: data, IP sorgente e URL ti indicano quasi sempre quale plugin o file è stato il punto di ingresso.
Fase 3 — Scansiona e individua il malware
Scansione con plugin
Se hai ancora accesso alla dashboard, installa Wordfence Security (versione gratuita sufficiente per la scansione) e avvia una scansione completa. Wordfence confronta i file del tuo WordPress con le versioni originali del repository ufficiale e segnala qualsiasi discrepanza.
Sucuri Security è un’alternativa valida, con il vantaggio di avere anche uno scanner online (sitecheck.sucuri.net) che non richiede accesso alla dashboard — utile se sei completamente fuori dalla admin.
Per la procedura completa di rimozione — inclusa la scansione manuale da riga di comando e l’identificazione delle backdoor — c’è una guida di come rimuovere malware da WordPress.
Scansione manuale dei file sospetti
La scansione automatica può non individuare tutti i malware offuscati. Controlla manualmente questi punti critici:
- /wp-content/uploads/ — non dovrebbe contenere file .php. La presenza di PHP qui è quasi sempre malware.
- /wp-content/mu-plugins/ — plugin caricati automaticamente, spesso usati per installare backdoor persistenti.
- wp-config(.)php e functions.php del tema attivo — confronta con una copia pulita. Codice aggiunto prima del tag <?php o dopo la fine del file è segnale di compromissione.
- .htaccess — cerca regole RewriteRule verso domini esterni, specialmente quelle condizionali che si attivano solo per bot o per mobile.
Nel database, cerca nella tabella wp_options valori anomali nei campi siteurl e home, e nella tabella wp_posts eventuali iframe o script iniettati nel contenuto degli articoli.
Fase 4 — Ripulisci file, database e backdoor
File del core WordPress
Reinstalla WordPress da zero scaricando la versione ufficiale da wordpress.org. Sovrascrivi tutte le cartelle wp-admin e wp-includes con i file puliti. Non toccare wp-content in questa fase — ci lavoriamo separatamente.
Plugin e temi
Disattiva tutti i plugin. Poi riattivali uno alla volta, scaricando ogni volta la versione ufficiale dal repository WordPress e sovrascrivendo la cartella esistente. Se un plugin non è più mantenuto o non lo usi, eliminalo definitivamente. Per i temi, stessa procedura — e se stai usando un tema acquistato, scarica la versione pulita dallo store originale.
I temi nulled (copie piratate di temi premium scaricate gratuitamente) sono uno dei vettori di infezione più comuni. Se il tuo tema è di questa categoria, la bonifica non è sufficiente: il codice malevolo è integrato nel tema stesso e ritornerà.
Database
Rimuovi dalla tabella wp_options eventuali task cron aggiunti dagli hacker (cerca voci anomale nella colonna option_name con valori tipo wp_cron_* non standard). Pulisci wp_posts da iframe e script iniettati nei contenuti. Rimuovi gli utenti admin non autorizzati.
Fase 5 — Cambia tutte le credenziali e le chiavi di sicurezza
A questo punto devi partire dal presupposto che tutte le credenziali siano state lette dall’attaccante. Cambia tutto, nell’ordine:
- Password di tutti gli utenti WordPress, partendo dall’amministratore.
- Password FTP e SFTP.
- Password del database MySQL.
- Password dell’account hosting e del pannello di controllo.
- Rigenera le secret key e i salt di WordPress: vai su api.wordpress.org/secret-key/1.1/salt/ per generare nuovi valori e sostituiscili in wp-config(.)php. Questo invalida tutte le sessioni attive, comprese quelle dell’hacker.
Fase 6 — Hardening post-attacco
La bonifica rimuove quello che c’è. L’hardening fa in modo che non rientri. Sono due operazioni distinte — e saltare la seconda è l’errore che vedo più spesso ripetuto:
- Blocca l’esecuzione PHP in /wp-content/uploads/: aggiungi una regola al file .htaccess di quella cartella che nega l’esecuzione di qualsiasi file PHP.
- Disabilita l’editor di file dalla dashboard: aggiungi define(‘DISALLOW_FILE_EDIT’, true); nel wp-config(.)php.
- Limita i tentativi di login: installa un plugin come Limit Login Attempts Reloaded o usa le funzionalità del tuo firewall.
- Abilita l’autenticazione a due fattori (2FA): per tutti gli account admin, tramite plugin come WP 2FA.
- Imposta i permessi corretti: 644 per i file, 755 per le cartelle, 600 per wp-config(.)php.
- Installa un WAF (Web Application Firewall): Wordfence nella versione gratuita offre un firewall base; Cloudflare (piano gratuito) aggiunge protezione a livello di rete.
Vuoi approfondire ogni singolo intervento? Ho una guida dedicata alla configurazione del firewall WordPress che copre nel dettaglio Wordfence e Cloudflare.
Fase 7 — Ripristina l’indicizzazione Google
Se Google ha rilevato il problema, lo vedi nella Search Console sotto Problemi di sicurezza — e probabilmente lo vedi anche nella SERP, con quegli avvisi sotto il titolo del sito che allontanano qualsiasi visitatore. Bonifica completata e hardening fatto? Allora puoi chiedere la revisione:
- Accedi a Google Search Console. Se non l’hai ancora, registra il tuo sito.
- Vai su Sicurezza e azioni manuali → Problemi di sicurezza. Google mostrerà i problemi rilevati e, se la bonifica è completa, dovresti vedere solo problemi già risolti.
- Clicca su Richiedi revisione. Descrivi brevemente gli interventi effettuati: tipo di malware trovato, come è stato rimosso, misure preventive adottate. Google impiega solitamente 24–72 ore per la revisione.
- Rigenera e invia la sitemap tramite Search Console per accelerare il re-crawl delle pagine.
Nota: se il sito era già ben posizionato prima dell’attacco, il recupero del ranking organico può richiedere alcune settimane anche dopo la rimozione degli avvisi. La velocità di recupero dipende da quanto a lungo il sito è rimasto compromesso.
Fai da te o affidarsi a un professionista?
Questa procedura è seguibile autonomamente se hai familiarità con FTP, phpMyAdmin e i file di configurazione di WordPress. Se qualcuno di questi strumenti ti è estraneo, o se la bonifica sembra incompleta dopo il primo tentativo — il malware ritorna, i reindirizzamenti persistono — è il segnale che l’infezione ha radici più profonde di quanto sembri.
Una backdoor non rimossa correttamente permette agli hacker di rientrare nel giro di poche ore, vanificando tutto il lavoro. In questi casi, l’intervento di chi lavora quotidianamente su queste situazioni è la scelta più rapida ed economica nel lungo periodo.
Se il tuo sito è stato attaccato e la situazione ti sembra fuori controllo, contattami: lavoro in modo diretto, senza intermediari, e risolvo il problema nel minor tempo possibile.
Supporto WordPressIn sintesi
Un sito WordPress hackerato si recupera quasi sempre completamente — ma solo se si agisce nell’ordine giusto e senza saltare passaggi. La sequenza è questa: isoli il sito, fai un backup forense dell’installazione compromessa (anche del sito infetto), scansioni con Wordfence, ripulisci file e database, cerchi e rimuovi le backdoor, cambi tutte le credenziali, applichi l’hardening e solo alla fine richiedi la revisione a Google Search Console. Ogni passo ha senso in quell’ordine preciso — invertirli o saltarli è la causa principale delle reinfection.
Il passo che quasi tutti saltano è il backup forense. Sembra contraddittorio fare il backup di un sito infetto — invece è il più utile di tutti, perché i log di server conservati nell’archivio ti dicono esattamente come è entrato l’hacker. Senza quella informazione, chiudi una porta e ne lasci aperta un’altra.
Sulle backdoor: non cercarle solo nei posti ovvi. /wp-content/mu-plugins/, temi inattivi, cartelle nascoste con il punto davanti — sono i posti preferiti perché vengono ignorati durante la pulizia. La combinazione di eval() e base64_decode() nello stesso blocco PHP è il segnale più affidabile. Una backdoor non trovata rende inutile qualsiasi altra cosa tu abbia fatto.
L’hardening non è opzionale. Non è nemmeno il “passo in più per i più attenti” — è quello che impedisce che tutto il lavoro precedente venga vanificato in 24 ore. PHP bloccato in /wp-content/uploads/, editor file disabilitato, 2FA attivo, WAF installato. Senza questo, la falla che ha permesso l’ingresso la prima volta rimane aperta.
Sull’indicizzazione Google: gli avvisi nella SERP spariscono entro 24–72 ore dalla richiesta di revisione in Search Console, se la bonifica è completa. Il ranking torna più lentamente — può richiedere settimane, dipende da quanto il sito è rimasto compromesso. La richiesta di revisione va mandata solo dopo aver terminato tutte le 7 fasi. Mandarla prima, con il sito ancora infetto, allunga i tempi invece di abbreviarli.
Domande frequenti (FAQ)
Si può recuperare un sito WordPress hackerato senza un backup?
Sì, è possibile ma più complesso. Senza backup è necessario ripulire manualmente file e database e reinstallare il core di WordPress da zero. Il processo è più lungo e richiede maggiore competenza tecnica, ma nella maggior parte dei casi il sito si recupera. Avere un backup automatico attivo è però fondamentale per prevenire questa situazione in futuro.
Quanto tempo ci vuole per recuperare un sito WordPress hackerato?
Dipende dalla gravità dell’attacco. Un’infezione semplice — un plugin vulnerabile che ha permesso l’inserimento di malware nei file — si risolve in 2–4 ore seguendo la procedura corretta. Attacchi più complessi con backdoor multiple nel database possono richiedere una giornata di lavoro. Il recupero del ranking Google richiede invece 1–3 settimane aggiuntive.
Il sito può essere attaccato di nuovo dopo la bonifica?
Sì, se non si esegue l’hardening post-attacco. La bonifica rimuove l’infezione attiva ma non chiude necessariamente le vulnerabilità che hanno permesso l’accesso. È fondamentale aggiornare tutti i plugin, cambiare le credenziali, installare un firewall e bloccare le aree del sito più esposte agli attacchi.
Nella sezione dedicata alla sicurezza WordPress trovi tutte le guide per costruire una protezione solida prima che succeda di nuovo.
Come faccio a sapere da quale plugin è entrato l'hacker?
I file di log del server (access.log) registrano tutte le richieste HTTP con data, ora e URL. Cercando le prime richieste anomale si risale spesso al file sfruttato. Wordfence mostra anche quale file è stato modificato per primo e quando. In alternativa, confrontare la data di modifica dei file del sito con la data dell’attacco permette di isolare i file toccati dagli hacker.
Google penalizza definitivamente i siti hackerati?
No, non in modo permanente. Google applica avvisi e riduzioni di ranking temporanei ai siti compromessi per proteggere gli utenti. Una volta che il sito è stato bonificato e la revisione approvata, gli avvisi vengono rimossi e il ranking recupera progressivamente. Siti che rimangono compromessi per lungo tempo subiscono però danni SEO più profondi e il recupero richiede più tempo.
