Menu
Sicurezza Wordpress

Come proteggere il file wp-config.php di WordPress

Gianluca Gentile · · 5 min di lettura

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.

Condividi: