In questo articolo, discuteremo i tipi più comuni di attacchi a WordPress, come identificarli e i diversi metodi per risolverli. Se riscontri un problema di questo tipo, ti consigliamo vivamente di contattare uno sviluppatore web professionista per ulteriore assistenza. Per ulteriori indicazioni su come migliorare la sicurezza del tuo account hosting, consulta questa guida.
IMPORTANTE: Prima di apportare qualsiasi modifica, crea un backup completo del tuo sito web.
NOTA BENE: Per ridurre il rischio di futuri attacchi a WordPress, scansiona regolarmente il tuo account hosting con uno strumento antivirus, rimuovi eventuali file dannosi o sospetti e mantieni tutti i plugin e i temi del tuo sito aggiornati alle versioni più recenti.
Sebbene diversi problemi possano causare la mancanza o la modifica dei file predefiniti, la causa più comune è la presenza di malware nella tua installazione di WordPress. Fortunatamente, gli strumenti antivirus sui nostri server Web e Hosting possono rilevare e mettere automaticamente in quarantena i file compromessi.
Se i file principali di WordPress vengono infettati, potresti riscontrare sintomi come:
Una pagina bianca;
Un errore 500 Internal Server Error;
Un “Questo sito sta riscontrando problemi tecnici” (introdotto in WordPress 5.2.2);
Oppure altri errori simili.
Per risolvere questo problema, segui semplicemente i passaggi indicati di seguito.
Per identificare la causa del problema sul tuo sito, esamina il file error_log. Questo file registra tutti gli errori critici riscontrati dal tuo sito web.
Puoi trovarlo nel tuo account cPanel > menu “File Manager” > nella directory principale della tua installazione WordPress.
Una volta che hai accesso alla cartella principale del dominio, cerca il file error_log. Se esiste, segui questi passaggi:
Fai clic destro sul file, quindi seleziona Visualizza:

All'interno del log, potresti vedere un errore come: “Nessun file o directory in…”, seguito dal percorso del file mancante. Questo indica che manca un file necessario e ciò impedisce al sito di funzionare correttamente.
Ad esempio:/home/cPuser/public_html/wp-settings.php

Per ripristinare il file mancante, scorri verso il basso fino alla sezione "Come sostituire i file mancanti" di questa guida.
Se il file error_log non è disponibile nella directory principale del tuo sito, puoi abilitare l'opzione PHP display_errors dal tuo account cPanel. Questa impostazione consente ai messaggi di errore di apparire direttamente sul sito, facilitando l'identificazione del problema.
Importante: Per motivi di sicurezza, assicurati di disabilitare display_errors una volta terminata la risoluzione dei problemi.
Puoi abilitare l'opzione PHP nei seguenti modi:
Tramite php.ini
Oltre al menu “PHP Tweaks” di cPanel, puoi anche modificare alcune impostazioni di un sito direttamente tramite un file php.ini aggiungendo/modificando le relative righe al suo interno.
Per abilitare l'opzione display_errors, dovrai aggiungere la seguente riga al file: display_errors=1
Puoi creare un nuovo file php.ini nella cartella principale del sito e aggiungere lì la riga, oppure modificare il file generato dal sistema seguendo i passaggi sotto.
Accedi al tuo account cPanel e vai al menu “File Manager”.
Assicurati che l'opzione “Mostra file nascosti (dotfiles)” sia abilitata nelle impostazioni:

Naviga nella seguente directory: /home/cPanel_user/.system-php/ini

Seleziona la versione PHP assegnata al tuo dominio e poi seleziona la directory del dominio. Ad esempio, il percorso completo potrebbe essere:
/home/cPanel_user/.system-php/ini/7.0/testwebsite.com
Fai clic destro sul file php.ini e seleziona Modifica.
Aggiungi la seguente riga al file: display_errors=1
Tramite .htaccess
Per abilitare l'opzione PHP display_errors tramite il file .htaccess, dovrai modificare il file nella directory principale del sito in “File Manager” e aggiungere lì la seguente riga:php_value display_errors 1
I passaggi dettagliati per trovare il file .htaccess sono disponibili in questo articolo.
Dopo aver apportato le modifiche, fai clic su Salva.
WordPress utilizza una struttura di file semplice e organizzata, che rende relativamente facile il ripristino di file mancanti o corrotti. Sostituire i file core predefiniti è fortemente consigliato, poiché garantisce che eventuali file compromessi dal malware vengano completamente ripristinati. Tuttavia, procedi con cautela: la sostituzione di determinati file o cartelle può comportare la perdita di dati se non eseguita correttamente.
Segui i passaggi seguenti per sostituire i file WordPress mancanti:
Accedi al tuo cPanel e vai su Softaculous Apps Installer.
Crea una nuova installazione di WordPress in una sottodirectory temporanea. Per farlo, fai clic sull'icona WordPress e poi seleziona Installa:

Verrai reindirizzato alla pagina delle impostazioni di installazione. Lì, seleziona il nome del dominio in questione dal menu a tendina e inserisci il nome di una sottocartella nel campo In Directory.
In questo esempio, usiamo la sottocartella ” fix” per l'installazione di WordPress:

NOTA: La sostituzione di tutti i file predefiniti aggiornerà la tua installazione esistente alla versione utilizzata nell'installazione temporanea “fix” e la combinazione di file di versioni diverse può causare conflitti di sistema e malfunzionamenti del sito.
Se è importante mantenere la versione attuale di WordPress o se intendi sostituire solo file specifici, controlla la versione del tuo sito all'interno del file /wp-includes/version.php e assicurati che la nuova installazione utilizzi la stessa versione di WordPress:

Puoi scegliere la versione di WordPress per la nuova installazione direttamente nella finestra di installazione:

Una volta configurate tutte le impostazioni, fai clic su Installazione rapida o scorri fino in fondo alla pagina di installazione e fai clic su Installa.
Dopo che la nuova installazione di WordPress è stata completata, i suoi file appariranno in “File Manager” > la directory principale del tuo dominio. Apri la cartella facendo doppio clic su di essa:

Per sostituire un file mancante specifico (ad esempio, wp-settings.php), individua quel file nella directory della nuova installazione.
Successivamente, sposta il file nella directory principale attuale del tuo sito facendo clic destro sul file > clic su Sposta > inserisci il percorso della cartella principale del sito > clic su Sposta file:

Una volta completato, il file mancante è stato ripristinato e il tuo sito dovrebbe ora caricarsi correttamente.
Nel processo di sostituzione di tutti i file predefiniti di WordPress per un sito, i passaggi da 1 a 6 sono gli stessi della sezione “Come sostituire i file WordPress mancanti”.
Dopo aver completato questi passaggi e creata la nuova installazione di WordPress, per sostituire tutti i file predefiniti nella cartella principale del sito, segui questi passaggi:
Apri la cartella principale della nuova installazione di WordPress:

All'interno della nuova cartella di installazione, elimina i seguenti file e cartelle:

.htaccess
wp-config.php
wp-content
Questi file e cartelle contengono la configurazione e i contenuti del sito e devono rimanere invariati.
Quindi, sposta i file rimanenti nella directory principale del sito principale. Per farlo, usa il pulsante Seleziona tutto > clic su Sposta > inserisci il percorso della cartella principale del sito > clic su Sposta file:

I file core di WordPress sono stati completamente sostituiti. Visita il tuo sito per confermare che tutto si carichi correttamente.
Se il sito mostra ancora errori, controlla nuovamente il error_log. Nella maggior parte dei casi, ulteriori problemi sono causati da file di temi o plugin mancanti.
La mancanza di file di tema o plugin può verificarsi per diversi motivi, ma la causa più comune è la presenza di malware che infetta e rimuove componenti essenziali della tua installazione di WordPress.
Se mancano file di plugin o tema di WordPress, potresti riscontrare:
Una pagina bianca;
Un errore 500 Internal Server Error;
Un “Questo sito sta riscontrando problemi tecnici” (introdotto in WordPress 5.2.2);
Una pagina caricata solo parzialmente o visivamente “rotta”.
Per assistenza nella diagnosi del problema, consulta le seguenti sezioni di questo articolo: Controlla il file error_log del tuo sito web e Abilita l'opzione PHP display_errors.
Potresti vedere messaggi di errore simili ai seguenti nel tuo error_log o direttamente sul sito:
PHP Fatal error: Uncaught Error: Call to undefined function sample_function() in /home/cPaneluser/...
Di seguito un esempio di errore causato da un file plugin corrotto o mancante:

Per ripristinare il file mancante, reinstalla semplicemente il tema o il plugin interessato.
NOTA: I file functions.php mancanti nei temi sono spesso collegati al malware wp-vcd.php, tipicamente situato nella directory /wp-includes. Prima di installare un nuovo tema, rimuovi wp-vcd.php se esiste, oppure, se vuoi garantire la massima sicurezza, sostituisci tutti i file predefiniti di WordPress come descritto in precedenza.
In alcuni casi, quando il tuo sito viene infettato da malware, potrebbe iniziare a reindirizzare i visitatori verso pagine dannose o sospette. Questo problema è causato più comunemente da un plugin o tema non sicuro, che consente agli attaccanti di modificare gli URL nel database o i file del sito.
NOTA: Non cliccare mai su nessuno dei link reindirizzati. Farlo potrebbe infettare il tuo computer personale con malware:

Per correggere i redirect dannosi, segui i passaggi seguenti:
Individua un file di configurazione del database del tuo sito - wp-config.php nel tuo cPanel > File Manager > cartella principale del sito. Apri il file e trova il nome del database del sito:

Poi, apri il database assegnato al tuo sito dal menu phpMyAdmin del tuo cPanel cliccandoci sopra e vai alla tabella wp_options (“wp_” è il prefisso predefinito; il tuo potrebbe essere diverso):

Controlla i valori dei campi siteurl e home e, se vedi URL dannosi o sospetti, sostituiscili con il vero nome di dominio:

Scansiona il resto del database per URL dannosi simili e sostituiscili di conseguenza.
Sostituisci temporaneamente il tuo attuale .htaccess con una versione predefinita pulita. È meglio rinominare il file esistente (ad esempio, .htaccess_old) e crearne uno nuovo da zero.
Per rinominare il file, fai doppio clic su di esso > seleziona Rinomina dall'elenco > inserisci un nuovo nome file > e premi Rinomina file.
Dopodiché, per creare un nuovo file, fai clic su + File > chiamalo .htaccess > e seleziona Crea nuovo file.
Una volta creato il nuovo .htaccess, modificalo facendo clic destro su di esso > seleziona Modifica dall'elenco. Una volta aperta la finestra di modifica, incolla le seguenti regole predefinite di WordPress nel file:# BEGIN WordPressRewriteEngine OnRewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]# END WordPress
Fai clic su Salva modifiche.
Se il tuo sito continua a reindirizzare, prova a sostituire tutti i file core predefiniti di WordPress.
Puoi anche disabilitare temporaneamente tutti i plugin tramite la dashboard di WordPress o il database e provare ad abilitarli uno alla volta. Una volta abilitato ogni plugin, controlla il sito per individuare quale causa il problema di redirect dannoso.