{"id":25657,"date":"2026-02-11T10:00:00","date_gmt":"2026-02-11T09:00:00","guid":{"rendered":"https:\/\/soccorsowp.it\/blog\/?p=25657"},"modified":"2026-02-11T10:00:00","modified_gmt":"2026-02-11T09:00:00","slug":"proteggere-wp-config-php-wordpress","status":"publish","type":"post","link":"https:\/\/soccorsowp.it\/blog\/proteggere-wp-config-php-wordpress\/","title":{"rendered":"Come proteggere il file wp-config.php di WordPress"},"content":{"rendered":"<h1>Come proteggere il file wp-config.php di WordPress<\/h1>\n<p>Il file <span style=\"font-family: monospace\">wp-config.php<\/span> \u00e8 il cuore della configurazione di <a href=\"https:\/\/soccorsowp.it\/blog\/blocco-di-contenuti-opt-in-per-wordpress\/\">WordPress<\/a>. 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, ha praticamente le chiavi del tuo sito: pu\u00f2 leggere il database, modificare i contenuti, creare account admin e installare backdoor. <strong>Proteggere wp-config.php<\/strong> \u00e8 una delle misure di sicurezza pi\u00f9 importanti che puoi implementare sul tuo sito WordPress.<\/p>\n<h2>Cosa contiene wp-config.php e perch\u00e9 \u00e8 critico<\/h2>\n<p>Il file wp-config.php contiene informazioni che, nelle mani sbagliate, permettono il controllo totale del sito:<\/p>\n<ul>\n<li><strong>Credenziali del database:<\/strong> nome del database, utente, password e host. Con queste informazioni, chiunque pu\u00f2 accedere direttamente al database e leggere o modificare qualsiasi dato \u2014 articoli, utenti, password, ordini WooCommerce.<\/li>\n<li><strong>Chiavi di sicurezza e salt:<\/strong> otto costanti crittografiche usate per firmare i cookie di autenticazione. Se compromesse, un attaccante pu\u00f2 generare cookie validi e accedere come qualsiasi utente senza conoscere la password.<\/li>\n<li><strong>Prefisso delle tabelle:<\/strong> conoscerlo facilita attacchi <a href=\"https:\/\/soccorsowp.it\/blog\/600-000-siti-wordpress-a-rischio-scoperta-grave-vulnerabilita-in-wp-fastest-cache\/\">SQL injection<\/a> mirati.<\/li>\n<li><strong>Modalit\u00e0 debug:<\/strong> se attiva in produzione, espone errori PHP con percorsi di file e dettagli tecnici utili per un attaccante.<\/li>\n<\/ul>\n<h2>Spostare wp-config.php fuori dalla root<\/h2>\n<p>Una delle protezioni pi\u00f9 efficaci \u00e8 <strong>spostare il file wp-config.php<\/strong> una directory sopra la cartella pubblica del sito. WordPress supporta nativamente questa configurazione: se non trova wp-config.php nella sua directory, lo cerca automaticamente nella directory genitore.<\/p>\n<p>Se WordPress \u00e8 installato in <span style=\"font-family: monospace\">\/var\/www\/html\/<\/span>, puoi spostare wp-config.php in <span style=\"font-family: monospace\">\/var\/www\/wp-config.php<\/span>. Il file si trover\u00e0 fuori dalla directory accessibile via web, rendendo impossibile l&#8217;accesso diretto tramite browser anche in caso di misconfigurazioni del server che permettano la lettura di file PHP come testo.<\/p>\n<p>Questa tecnica funziona solo se WordPress \u00e8 installato nella root del dominio o in una sottocartella di primo livello. Su hosting condivisi dove la struttura delle directory \u00e8 gestita dal provider, potrebbe non essere possibile. Verifica con il supporto del tuo hosting prima di procedere.<\/p>\n<h2>Bloccare l&#8217;accesso via .htaccess<\/h2>\n<p>Se non puoi spostare il file, puoi <strong>bloccare l&#8217;accesso HTTP<\/strong> a wp-config.php tramite una regola nel file <span style=\"font-family: monospace\">.htaccess<\/span>. Aggiungi questo blocco nel file .htaccess nella root di WordPress:<\/p>\n<pre>&lt;Files wp-config.php&gt;\n    Order Allow,Deny\n    Deny from all\n&lt;\/Files&gt;<\/pre>\n<p>Questa regola impedisce a qualsiasi richiesta HTTP di accedere al file. WordPress continuer\u00e0 a leggerlo normalmente tramite PHP (che accede al filesystem locale, non via HTTP), ma nessun browser o bot potr\u00e0 scaricarlo. Su server Nginx, la configurazione equivalente \u00e8:<\/p>\n<pre>location ~* wp-config.php {\n    deny all;\n}<\/pre>\n<h2>Impostare i permessi corretti<\/h2>\n<p>I <strong>permessi del file<\/strong> determinano chi pu\u00f2 leggere, scrivere ed eseguire wp-config.php a livello di sistema operativo. I permessi consigliati sono:<\/p>\n<ul>\n<li><strong>640:<\/strong> il proprietario pu\u00f2 leggere e scrivere, il gruppo pu\u00f2 leggere, gli altri non hanno accesso. Questa \u00e8 l&#8217;impostazione consigliata per la maggior parte degli hosting.<\/li>\n<li><strong>600:<\/strong> solo il proprietario pu\u00f2 leggere e scrivere. Nessun altro utente del server pu\u00f2 accedere al file. L&#8217;impostazione pi\u00f9 restrittiva, ideale se il web server gira con lo stesso utente proprietario del file.<\/li>\n<li><strong>440:<\/strong> sola lettura per proprietario e gruppo. Da usare dopo la configurazione iniziale se non prevedi modifiche frequenti. Ricorda di ripristinare i permessi di scrittura se devi aggiornare il file.<\/li>\n<\/ul>\n<p>Evita assolutamente i permessi <strong>644<\/strong> (che permettono a qualsiasi utente del server di leggere il file) e soprattutto <strong>666 o 777<\/strong> (che permettono a chiunque di leggere e scrivere). Per impostare i permessi via SSH:<\/p>\n<pre>chmod 640 wp-config.php<\/pre>\n<h2>Rigenerare le chiavi di sicurezza<\/h2>\n<p>Le <strong>chiavi di sicurezza<\/strong> (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY e i rispettivi salt) sono stringhe casuali usate per crittografare i cookie di autenticazione. Se sospetti che il tuo sito sia stato compromesso, rigenerare queste chiavi \u00e8 fondamentale: tutti i cookie esistenti vengono invalidati e tutti gli utenti (inclusi eventuali attaccanti) vengono disconnessi.<\/p>\n<p>Per generare nuove chiavi, visita il generatore ufficiale di WordPress all&#8217;indirizzo <span style=\"font-family: monospace\">api.wordpress.org\/secret-key\/1.1\/salt\/<\/span>. Copia le otto righe generate e sostituiscile nel file wp-config.php. Dopo il salvataggio, dovrai effettuare nuovamente il login \u2014 questo \u00e8 normale e conferma che le nuove chiavi funzionano.<\/p>\n<p>\u00c8 buona pratica rigenerare le chiavi periodicamente (ogni 3-6 mesi) e obbligatoriamente dopo: la scoperta di un&#8217;intrusione, il licenziamento di un collaboratore con accesso admin o la compromissione di un plugin.<\/p>\n<h2>Disabilitare la modifica dei file dalla dashboard<\/h2>\n<p>WordPress include un editor di codice integrato nella dashboard (<span style=\"font-family: monospace\">Aspetto \u2192 Editor del tema<\/span> e <span style=\"font-family: monospace\">Plugin \u2192 Editor dei plugin<\/span>) che permette di modificare i file PHP direttamente dal browser. Se un attaccante ottiene accesso a un account admin, pu\u00f2 usare questo editor per iniettare codice malevolo senza bisogno di accesso FTP o SSH.<\/p>\n<p>Disabilita l&#8217;editor aggiungendo questa riga a wp-config.php:<\/p>\n<pre>define('DISALLOW_FILE_EDIT', true);<\/pre>\n<p>Per una protezione ancora maggiore, puoi disabilitare anche l&#8217;installazione e l&#8217;aggiornamento di plugin e temi dalla dashboard:<\/p>\n<pre>define('DISALLOW_FILE_MODS', true);<\/pre>\n<p>Questa seconda opzione \u00e8 pi\u00f9 restrittiva: gli aggiornamenti di plugin, temi e core dovranno essere eseguiti manualmente via FTP, SSH o WP-CLI. \u00c8 consigliata per siti in produzione dove le modifiche vengono gestite attraverso un workflow controllato.<\/p>\n<h2>Forzare SSL per il login e l&#8217;admin<\/h2>\n<p>Se il tuo sito ha SSL attivo (HTTPS), puoi forzare WordPress a usare sempre la connessione crittografata per il login e l&#8217;area admin:<\/p>\n<pre>define('FORCE_SSL_ADMIN', true);<\/pre>\n<p>Questa impostazione garantisce che le credenziali di accesso e i cookie di sessione vengano trasmessi solo su connessione crittografata, impedendo l&#8217;intercettazione su reti non sicure.<\/p>\n<h2>Disabilitare il debug in produzione<\/h2>\n<p>La modalit\u00e0 debug di WordPress \u00e8 uno strumento indispensabile durante lo sviluppo ma un <strong>rischio di sicurezza in produzione<\/strong>. Quando attiva, gli errori PHP vengono mostrati sullo schermo, rivelando percorsi dei file, nomi delle tabelle del database, versioni di plugin e altre informazioni utili per un attaccante.<\/p>\n<p>Assicurati che queste righe siano presenti in wp-config.php in produzione:<\/p>\n<pre>define('WP_DEBUG', false);\ndefine('WP_DEBUG_DISPLAY', false);\ndefine('WP_DEBUG_LOG', false);<\/pre>\n<p>Se hai bisogno di debug in produzione per diagnosticare un problema, attiva solo il log su file (<span style=\"font-family: monospace\">WP_DEBUG_LOG = true<\/span>) senza mostrare gli errori a schermo (<span style=\"font-family: monospace\">WP_DEBUG_DISPLAY = false<\/span>). Ricorda di disattivare il debug e cancellare il file di log quando hai finito.<\/p>\n<h2>Limitare le revisioni e gli autosave<\/h2>\n<p>Due impostazioni in wp-config.php che migliorano sia la sicurezza che le prestazioni:<\/p>\n<pre>define('WP_POST_REVISIONS', 3);\ndefine('AUTOSAVE_INTERVAL', 120);<\/pre>\n<p>Limitare le revisioni a 3 riduce la superficie di attacco nel database (meno dati sensibili archiviati) e alleggerisce il database. Aumentare l&#8217;intervallo di autosave da 60 a 120 secondi riduce le richieste AJAX verso il server.<\/p>\n<h2>Il tuo wp-config.php \u00e8 al sicuro?<\/h2>\n<p>La protezione di wp-config.php \u00e8 solo uno degli aspetti della <a href=\"https:\/\/soccorsowp.it\/blog\/urge-aggiornare-il-plugin-per-proteggere-oltre-200-000-siti\/\">sicurezza WordPress<\/a>, ma \u00e8 tra i pi\u00f9 critici. Se non sei sicuro che il tuo sito sia configurato in modo sicuro, o se sospetti che il file sia stato compromesso, il team di <strong>SoccorsoWP<\/strong> pu\u00f2 eseguire un audit di sicurezza completo, verificare la configurazione di wp-config.php e implementare tutte le protezioni necessarie. <a href=\"https:\/\/soccorsowp.it\/ticket\/\">Apri un ticket<\/a> e metti al sicuro il cuore del tuo sito.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come proteggere il file wp-config.php di WordPress Il file wp-config.php \u00e8 il cuore della configurazione di WordPress. Contiene le credenziali del database, le chiavi di&#8230;<\/p>\n","protected":false},"author":1,"featured_media":25658,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"Proteggere wp-config.php WordPress: guida alla sicurezza","_seopress_titles_desc":"Come proteggere il file wp-config.php di WordPress: spostamento, permessi, blocco .htaccess, chiavi di sicurezza e impostazioni critiche.","_seopress_robots_index":"","footnotes":""},"categories":[1700],"tags":[],"class_list":{"0":"post-25657","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-sicurezza-wordpress"},"_links":{"self":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/comments?post=25657"}],"version-history":[{"count":1,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25657\/revisions"}],"predecessor-version":[{"id":26069,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25657\/revisions\/26069"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media\/25658"}],"wp:attachment":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media?parent=25657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/categories?post=25657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/tags?post=25657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}