Proteggere le tabelle del database
In fase di istallazione WordPress chiede all'amministratore del sito di assegnare un prefisso ai nomi delle tabelle, proponendo il valore predefinito wp_
. Questo viene registrato nel file wp-config.php
, nella variabile $table_prefix
:
$table_prefix = 'wp_';
Lasciare inalterato il prefisso suggerito, significa mettere in condizione chiunque di conoscere il nome delle tabelle del database. Modificando il prefisso, invece, si aggiunge una barriera in più contro le SQL injections. È quindi fortemente consigliato cambiare la stringa wp_
con un qualunque valore custom.
Se il sito è già in produzione, è ancora possibile modificare il prefisso delle tabelle, anche facendo ricorso alle funzionalità di PHPMyAdmin. I nomi delle tabelle, infatti, possono essere rinominati dalla scheda "Operations" di PHPMyAdmin come mostrato nell'immagine che segue.
Questa modifica dovrà essere accompagnata dalla modifica del valore di $table_prefix
nel file wp-config.php
:
$table_prefix = 'sm_';
Andranno, poi, modificati i valori di alcuni campi della tabella wp_usermeta
. L'immagine successiva mette a confronto le tabelle {prefix}_usermeta
di due diverse istallazioni: nella prima istallazione è stato lasciato il prefisso wp_
, nella seconda è stato assegnato al prefisso un valore diverso:
Una volta individuati i campi meta_key
il cui valore inizia con il prefizzo wp_
, bisognerà cambiarne i valori. PHPMyAdmin permette di agire sul valore con un semplice doppio click sul campo della tabella.
Ultima tabella da aggiornare è wp_options
, dove dovrà essere modificato il campo option_name
in corrispondenza del valore wp_user_roles
. Anche qui dovrà essere sostituito il prefisso wp_
.
Nascondere file e cartelle dell'istallazione
wp-config.php
è uno dei più importanti file di un'istallazione, in quanto contiene informazioni fondamentali, come i dati di connessione al database ed altri parametri di configurazione. È importante, quindi, proteggerlo da eventuali attacchi, riducendo i permessi di scrittura e, quando possibile, nascondendolo in una directory di livello superiore. Altre misure sono possibili agendo sulle impostazioni del server tramite il file .htaccess
e saranno descritte nei prossimi capitoli.
WordPress permette di spostare il file wp-config.php
in una directory di livello immediatamente superiore a quello dell'istallazione: il file sarà rilevato automaticamente nella sua nuova collocazione. Ovviamente, è possibile effettuare questa operazione solo se nello stesso spazio Web risiede una sola istallazione di WordPress.
È anche possibile spostare cartelle particolarmente sensibili che vengono utilizzate di continuo durante il funzionamento del CMS. Si tratta del folder che ospita l'intero contenuto del sito, /wp-content
, del folder che ospita i plugin, /wp-content/plugins
, e di quello che ospita i file media allegati ai contenuti, /wp-content/uploads
.
Una volta spostati questi folder nella posizione desiderata, nel file wp-config.php
dovranno essere definite le seguenti costanti:
// imposta URL e PATH della cartella wp-content
define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/wordpress/wp-content' );
define( 'WP_CONTENT_URL', 'http://example.com/wordpress/wp-content' );
// imposta URL e PATH della cartella plugins
define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/wordpress/wp-content/hidden/plugins' );
define( 'WP_PLUGIN_URL', 'http://example.com/wordpress/wp-content/hidden/plugins' );
// imposta URL e PATH della cartella uploads
define( 'UPLOADS', 'wordpress/wp-content/hidden/uploads' );
Con queste modifiche, la struttura dei file non sarà più nota.