{"id":25783,"date":"2026-05-13T10:00:00","date_gmt":"2026-05-13T08:00:00","guid":{"rendered":"https:\/\/soccorsowp.it\/blog\/?p=25783"},"modified":"2026-05-13T10:00:00","modified_gmt":"2026-05-13T08:00:00","slug":"proteggere-file-wp-config-php-wordpress","status":"publish","type":"post","link":"https:\/\/soccorsowp.it\/blog\/proteggere-file-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, ottiene il controllo completo del tuo sito e del database. In questa guida ti spiego come <strong>proteggere wp-config.php<\/strong> con diverse tecniche, dalla pi\u00f9 semplice alla pi\u00f9 avanzata.<\/p>\n<h2>Perch\u00e9 wp-config.php \u00e8 un bersaglio<\/h2>\n<p>Il file <span style=\"font-family: monospace\">wp-config.php<\/span> 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\u00f2 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.<\/p>\n<h2>Spostare wp-config.php fuori dalla directory pubblica<\/h2>\n<p>WordPress supporta nativamente il posizionamento di <span style=\"font-family: monospace\">wp-config.php<\/span> una directory sopra la cartella principale del sito. Se il tuo WordPress \u00e8 installato in <span style=\"font-family: monospace\">\/var\/www\/html\/<\/span>, puoi spostare il file in <span style=\"font-family: monospace\">\/var\/www\/wp-config.php<\/span>:<\/p>\n<pre>mv \/var\/www\/html\/wp-config.php \/var\/www\/wp-config.php<\/pre>\n<p>WordPress cercher\u00e0 automaticamente il file nella directory superiore se non lo trova nella propria cartella. Non serve modificare nient&#8217;altro. Questo semplice spostamento rende il file inaccessibile via web perch\u00e9 si trova fuori dalla document root del server.<\/p>\n<h2>Bloccare l&#8217;accesso via .htaccess<\/h2>\n<p>Se usi Apache e non puoi spostare il file, aggiungi questa regola nel file <span style=\"font-family: monospace\">.htaccess<\/span> nella directory principale di WordPress:<\/p>\n<pre>&lt;files wp-config.php&gt;\norder allow,deny\ndeny from all\n&lt;\/files&gt;<\/pre>\n<p>Questa direttiva blocca qualsiasi richiesta HTTP diretta al file <span style=\"font-family: monospace\">wp-config.php<\/span>. PHP pu\u00f2 ancora leggerlo internamente perch\u00e9 l&#8217;accesso avviene a livello di filesystem, non via HTTP. \u00c8 una protezione efficace contro tentativi di accesso diretto dal browser.<\/p>\n<h2>Bloccare l&#8217;accesso con Nginx<\/h2>\n<p>Se il tuo server usa <strong>Nginx<\/strong>, aggiungi questo blocco nella configurazione del virtual host:<\/p>\n<pre>location = \/wp-config.php {\n    deny all;\n    return 404;\n}<\/pre>\n<p>Questa regola restituisce un errore 404 per qualsiasi richiesta diretta al file, nascondendo anche la sua esistenza. Ricarica la configurazione di Nginx con <span style=\"font-family: monospace\">nginx -t &amp;&amp; systemctl reload nginx<\/span> per applicare le modifiche.<\/p>\n<h2>Impostare i permessi corretti<\/h2>\n<p>I permessi del file sono una protezione fondamentale. Il file <span style=\"font-family: monospace\">wp-config.php<\/span> dovrebbe avere permessi <strong>440<\/strong> o <strong>400<\/strong>, che lo rendono leggibile solo dal proprietario e dal gruppo (o solo dal proprietario):<\/p>\n<pre>chmod 440 \/var\/www\/html\/wp-config.php\nchown www-data:www-data \/var\/www\/html\/wp-config.php<\/pre>\n<p>Il permesso 440 permette al server web (che gira come utente <span style=\"font-family: monospace\">www-data<\/span>) di leggere il file, ma nessuno pu\u00f2 modificarlo via web. Se il tuo sito funziona correttamente con il permesso 400, usa quello: \u00e8 ancora pi\u00f9 restrittivo. Evita assolutamente i permessi 777 o 666 che rendono il file leggibile e scrivibile da qualsiasi utente del sistema.<\/p>\n<h2>Rigenerare le chiavi di sicurezza<\/h2>\n<p>Le chiavi di sicurezza in <span style=\"font-family: monospace\">wp-config.php<\/span> (<span style=\"font-family: monospace\">AUTH_KEY<\/span>, <span style=\"font-family: monospace\">SECURE_AUTH_KEY<\/span>, 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:<\/p>\n<pre>define('AUTH_KEY',         'nuova-chiave-casuale-qui');\ndefine('SECURE_AUTH_KEY',  'nuova-chiave-casuale-qui');\ndefine('LOGGED_IN_KEY',    'nuova-chiave-casuale-qui');\ndefine('NONCE_KEY',        'nuova-chiave-casuale-qui');\ndefine('AUTH_SALT',        'nuova-chiave-casuale-qui');\ndefine('SECURE_AUTH_SALT', 'nuova-chiave-casuale-qui');\ndefine('LOGGED_IN_SALT',   'nuova-chiave-casuale-qui');\ndefine('NONCE_SALT',       'nuova-chiave-casuale-qui');<\/pre>\n<p>La rigenerazione delle chiavi invalida automaticamente tutte le sessioni attive, costringendo tutti gli utenti (inclusi eventuali intrusi) a effettuare un nuovo login.<\/p>\n<h2>Disabilitare la modifica dei file dalla bacheca<\/h2>\n<p>WordPress include un editor di file integrato che permette di modificare temi e plugin direttamente dalla bacheca. Se un attaccante ottiene accesso admin, pu\u00f2 usare questo editor per inserire codice malevolo. Disabilitalo aggiungendo questa riga a <span style=\"font-family: monospace\">wp-config.php<\/span>:<\/p>\n<pre>define('DISALLOW_FILE_EDIT', true);<\/pre>\n<p>Questa costante rimuove completamente l&#8217;editor dal menu della bacheca. Per modificare i file dovrai usare FTP o SSH, che richiedono credenziali separate e sono molto pi\u00f9 difficili da compromettere.<\/p>\n<h2>Cambiare il prefisso delle tabelle del database<\/h2>\n<p>Il prefisso predefinito delle tabelle WordPress \u00e8 <span style=\"font-family: monospace\">wp_<\/span>, noto a qualsiasi attaccante. Anche se cambiarlo non \u00e8 una protezione definitiva, aggiunge un livello di difficolt\u00e0 agli attacchi di <a href=\"https:\/\/soccorsowp.it\/blog\/600-000-siti-wordpress-a-rischio-scoperta-grave-vulnerabilita-in-wp-fastest-cache\/\">SQL injection<\/a>. Se stai installando WordPress per la prima volta, scegli un prefisso personalizzato come <span style=\"font-family: monospace\">miosito_<\/span> 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 \u00e8 un&#8217;operazione delicata da fare con cautela e sempre dopo aver eseguito un backup completo del database.<\/p>\n<h2>Forzare SSL per la bacheca e il login<\/h2>\n<p>Un&#8217;altra protezione che puoi attivare direttamente in <span style=\"font-family: monospace\">wp-config.php<\/span> \u00e8 forzare la connessione HTTPS per la bacheca di amministrazione e la pagina di login. Aggiungi queste due costanti:<\/p>\n<pre>define('FORCE_SSL_ADMIN', true);\ndefine('FORCE_SSL_LOGIN', true);<\/pre>\n<p>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:\/\/. \u00c8 una protezione essenziale se il tuo sito ha il certificato SSL installato.<\/p>\n<h2>Monitorare le modifiche al file<\/h2>\n<p>Configura un sistema di monitoraggio che ti avvisi se <span style=\"font-family: monospace\">wp-config.php<\/span> viene modificato. Plugin di sicurezza come Wordfence includono il monitoraggio dell&#8217;integrit\u00e0 dei file. In alternativa, puoi creare un semplice cron job che controlla l&#8217;hash del file e ti invia un&#8217;email se cambia:<\/p>\n<pre># Salva l'hash iniziale\nmd5sum \/var\/www\/html\/wp-config.php &gt; \/root\/.wpconfig-hash\n\n# Nel crontab, controlla ogni ora\n0 * * * * md5sum -c \/root\/.wpconfig-hash || mail -s \"wp-config modificato!\" admin@esempio.com<\/pre>\n<p>Questo tipo di monitoraggio ti permette di reagire rapidamente a modifiche non autorizzate, che spesso sono il primo segnale di una compromissione in corso.<\/p>\n<h2>Serve aiuto con la sicurezza?<\/h2>\n<p>Se vuoi un audit completo della sicurezza del tuo sito WordPress, inclusa la protezione dei file sensibili come <span style=\"font-family: monospace\">wp-config.php<\/span>, il team di <strong><a href=\"https:\/\/soccorsowp.it\/blog\/i-migliori-plugin-woocommerce-per-dominare-il-black-friday\/\">SoccorsoWP<\/a><\/strong> pu\u00f2 analizzare la tua configurazione e implementare tutte le protezioni necessarie. <a href=\"https:\/\/soccorsowp.it\/ticket\/\">Apri un ticket<\/a> e metti il tuo sito al sicuro.<\/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":25784,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"Come proteggere wp-config.php WordPress: guida completa","_seopress_titles_desc":"Proteggi il file wp-config.php di WordPress con permessi corretti, .htaccess, spostamento fuori root e altre tecniche di sicurezza avanzate.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","footnotes":""},"categories":[1700],"tags":[],"class_list":["post-25783","post","type-post","status-publish","format-standard","has-post-thumbnail","category-sicurezza-wordpress"],"_links":{"self":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25783","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=25783"}],"version-history":[{"count":0,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25783\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media\/25784"}],"wp:attachment":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media?parent=25783"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/categories?post=25783"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/tags?post=25783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}