Come proteggere il file wp-config.php di WordPress
Il file wp-config.php è il cuore della configurazione di WordPress. Contiene le credenziali del database, le chiavi di sicurezza, il prefisso delle tabelle e altre impostazioni critiche. Se un attaccante riesce ad accedere a questo file, ottiene il controllo completo del tuo sito e del database. In questa guida ti spiego come proteggere wp-config.php con diverse tecniche, dalla più semplice alla più avanzata.
Perché wp-config.php è un bersaglio
Il file wp-config.php contiene informazioni sensibili in testo leggibile: nome del database, utente e password MySQL, il prefisso delle tabelle e le chiavi di autenticazione. Se un malintenzionato riesce a leggerlo, può connettersi direttamente al database, modificare contenuti, creare utenti admin e installare backdoor. Normalmente PHP esegue il file senza mostrarlo, ma un errore di configurazione del server (ad esempio PHP che smette di funzionare) potrebbe esporre il contenuto del file come testo semplice nel browser.
Spostare wp-config.php fuori dalla directory pubblica
WordPress supporta nativamente il posizionamento di wp-config.php una directory sopra la cartella principale del sito. Se il tuo WordPress è installato in /var/www/html/, puoi spostare il file in /var/www/wp-config.php:
mv /var/www/html/wp-config.php /var/www/wp-config.php
WordPress cercherà automaticamente il file nella directory superiore se non lo trova nella propria cartella. Non serve modificare nient’altro. Questo semplice spostamento rende il file inaccessibile via web perché si trova fuori dalla document root del server.
Bloccare l’accesso via .htaccess
Se usi Apache e non puoi spostare il file, aggiungi questa regola nel file .htaccess nella directory principale di WordPress:
<files wp-config.php> order allow,deny deny from all </files>
Questa direttiva blocca qualsiasi richiesta HTTP diretta al file wp-config.php. PHP può ancora leggerlo internamente perché l’accesso avviene a livello di filesystem, non via HTTP. È una protezione efficace contro tentativi di accesso diretto dal browser.
Bloccare l’accesso con Nginx
Se il tuo server usa Nginx, aggiungi questo blocco nella configurazione del virtual host:
location = /wp-config.php {
deny all;
return 404;
}
Questa regola restituisce un errore 404 per qualsiasi richiesta diretta al file, nascondendo anche la sua esistenza. Ricarica la configurazione di Nginx con nginx -t && systemctl reload nginx per applicare le modifiche.
Impostare i permessi corretti
I permessi del file sono una protezione fondamentale. Il file wp-config.php dovrebbe avere permessi 440 o 400, che lo rendono leggibile solo dal proprietario e dal gruppo (o solo dal proprietario):
chmod 440 /var/www/html/wp-config.php chown www-data:www-data /var/www/html/wp-config.php
Il permesso 440 permette al server web (che gira come utente www-data) di leggere il file, ma nessuno può modificarlo via web. Se il tuo sito funziona correttamente con il permesso 400, usa quello: è ancora più restrittivo. Evita assolutamente i permessi 777 o 666 che rendono il file leggibile e scrivibile da qualsiasi utente del sistema.
Rigenerare le chiavi di sicurezza
Le chiavi di sicurezza in wp-config.php (AUTH_KEY, SECURE_AUTH_KEY, ecc.) servono a crittografare i cookie di autenticazione. Se sospetti che il file sia stato compromesso, rigenera immediatamente queste chiavi. Visita il generatore ufficiale di WordPress e copia le nuove chiavi nel file:
define('AUTH_KEY', 'nuova-chiave-casuale-qui');
define('SECURE_AUTH_KEY', 'nuova-chiave-casuale-qui');
define('LOGGED_IN_KEY', 'nuova-chiave-casuale-qui');
define('NONCE_KEY', 'nuova-chiave-casuale-qui');
define('AUTH_SALT', 'nuova-chiave-casuale-qui');
define('SECURE_AUTH_SALT', 'nuova-chiave-casuale-qui');
define('LOGGED_IN_SALT', 'nuova-chiave-casuale-qui');
define('NONCE_SALT', 'nuova-chiave-casuale-qui');
La rigenerazione delle chiavi invalida automaticamente tutte le sessioni attive, costringendo tutti gli utenti (inclusi eventuali intrusi) a effettuare un nuovo login.
Disabilitare la modifica dei file dalla bacheca
WordPress include un editor di file integrato che permette di modificare temi e plugin direttamente dalla bacheca. Se un attaccante ottiene accesso admin, può usare questo editor per inserire codice malevolo. Disabilitalo aggiungendo questa riga a wp-config.php:
define('DISALLOW_FILE_EDIT', true);
Questa costante rimuove completamente l’editor dal menu della bacheca. Per modificare i file dovrai usare FTP o SSH, che richiedono credenziali separate e sono molto più difficili da compromettere.
Cambiare il prefisso delle tabelle del database
Il prefisso predefinito delle tabelle WordPress è wp_, noto a qualsiasi attaccante. Anche se cambiarlo non è una protezione definitiva, aggiunge un livello di difficoltà agli attacchi di SQL injection. Se stai installando WordPress per la prima volta, scegli un prefisso personalizzato come miosito_ o un prefisso casuale. Su installazioni esistenti, la modifica richiede di rinominare tutte le tabelle nel database e aggiornare alcuni valori nelle tabelle options e usermeta, quindi è un’operazione delicata da fare con cautela e sempre dopo aver eseguito un backup completo del database.
Forzare SSL per la bacheca e il login
Un’altra protezione che puoi attivare direttamente in wp-config.php è forzare la connessione HTTPS per la bacheca di amministrazione e la pagina di login. Aggiungi queste due costanti:
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
Questo garantisce che le credenziali di login e i cookie di sessione vengano sempre trasmessi su connessione crittografata, anche se qualcuno accede alla bacheca digitando un URL con http:// invece di https://. È una protezione essenziale se il tuo sito ha il certificato SSL installato.
Monitorare le modifiche al file
Configura un sistema di monitoraggio che ti avvisi se wp-config.php viene modificato. Plugin di sicurezza come Wordfence includono il monitoraggio dell’integrità dei file. In alternativa, puoi creare un semplice cron job che controlla l’hash del file e ti invia un’email se cambia:
# Salva l'hash iniziale md5sum /var/www/html/wp-config.php > /root/.wpconfig-hash # Nel crontab, controlla ogni ora 0 * * * * md5sum -c /root/.wpconfig-hash || mail -s "wp-config modificato!" admin@esempio.com
Questo tipo di monitoraggio ti permette di reagire rapidamente a modifiche non autorizzate, che spesso sono il primo segnale di una compromissione in corso.
Serve aiuto con la sicurezza?
Se vuoi un audit completo della sicurezza del tuo sito WordPress, inclusa la protezione dei file sensibili come wp-config.php, il team di SoccorsoWP può analizzare la tua configurazione e implementare tutte le protezioni necessarie. Apri un ticket e metti il tuo sito al sicuro.