Modificare il prefisso delle tabelle database di WordPress

Il prefisso delle tabelle database WordPress predefinito non è il massimo in termini di sicurezza. Vediamo come modificarlo

Photo credits: Bing Image Creator con tecnologia DALL·E 3

Il prefisso delle tabelle del database di WordPress è impostato in fase di installazione e il sistema prevede, in modo predefinito, il prefisso standard “wp_”. Questa impostazione, in quanto nota a tutti, può costituire un limite di sicurezza del nostro CMS preferito, per cui il consiglio è sempre quello di modificarlo con uno scelto ad-hoc in modo casuale. In questo modo renderemo la vita più complicata a qualunque malintenzionato voglia sfruttare le SQL injection e/o altri tipi di attacchi hacker.

Il prefisso tabelle database WordPress perfetto

L’ideale nella scelta del prefisso per le tabelle dei database WordPress è di averne uno diverso per ogni sito che si va ad installare, che sia, ad esempio, una stringa di quattro caratteri seguita dal simbolo underscore, che delimita il nome vero e proprio della tabella come accade per il prefisso predefinito. Un buon prefisso tabelle database WordPress potrebbe essere ad esempio “xxxx_” come riportato negli esempi di questa guida. La soluzione migliore è di usare caratteri e numeri in luogo delle x perché in questo modo se un utente malintenzionato ottenesse il prefisso del database di un sito da voi gestito non comprometterebbe anche i vostri altri siti. Inoltre, la scelta di optare per un prefisso database differente per ogni sito è utile anche per motivi tecnici, precisamente in merito alla cache. Infatti alcuni tipi di object-cache di WordPress, se in funzione su hosting condivisi ed in configurazione predefinita, potrebbero confondere i dati in cache di un sito piuttosto che quelli di un altro, creando un redirect fisso verso il sito che per primo ha memorizzato i dati nella cache.

Le difficoltà di questa modifica

Tuttavia per modificare il prefisso delle tabelle del database di WordPress, su un sito già in funzione, non è sufficiente modificare l’opzione nel file wp-config.php di WordPress in quanto, così facendo, avvieremmo una nuova installazione, né è sufficiente modificare anche tutte le tabelle con il nuovo prefisso, in quanto poi ci verrà inibita la possibilità di accedere al backend da amministratori o con ruoli superiori a sottoscrittore, in quanto determinate tabelle relative al ruolo delle utenze, come vedremo di seguito, sono strettamente collegate al prefisso delle tabelle del database. Vediamo quindi come procedere all’operazione di modifica senza problemi.

Creiamo un backup del database

Come ogni operazione di modifica del nostro sito WordPress, è opportuno in via precauzionale partire da un backup del database, in modo che, nel caso qualcosa andasse storto, potremo ripristinare lo stato precedente del sito, in cui era sicuramente funzionante. L’unica operazione che andremo ad effettuare sui file sarà quella della modifica del file wp-config.php, facilmente ripristinabile, per cui non è necessario fare anche un backup dei file, al massimo possiamo salvare una copia del file wp-config.php che in caso di insuccesso andrà ripristinato insieme al database.

Modifichiamo il prefisso tabelle database di WordPress

Completate le opportune operazioni di backup potremo iniziare la modifica vera e propria impostando i parametri contenuti nelle varie tabelle del database con il nuovo prefisso scelto. Durante questa operazione il sito continuerà a funzionare ma come anticipato non potrete accedervi da amministratore. Procediamo quindi lanciando i seguenti comandi SQL, su phpMyAdmin, Adminer o il vostro client MySQL preferito. Rimando alla guida sulla connessione al database WordPress per informazioni in merito all’utilizzo dei comandi MySQL.

# Tabella "options"
UPDATE `wp_options` SET `option_name` = 'xxxx_user_roles' WHERE `option_name` = 'wp_user_roles';

# Tabella "usermeta"
UPDATE `wp_usermeta` SET `meta_key` = 'xxxx_capabilities' WHERE `meta_key` = 'wp_capabilities';
UPDATE `wp_usermeta` SET `meta_key` = 'xxxx_user_level' WHERE `meta_key` = 'wp_user_level';
UPDATE `wp_usermeta` SET `meta_key` = 'xxxx_dashboard_quick_press_last_post_id' WHERE `meta_key` = 'wp_dashboard_quick_press_last_post_id';
UPDATE `wp_usermeta` SET `meta_key` = 'xxxx_user-settings' WHERE `meta_key` = 'wp_user-settings';
UPDATE `wp_usermeta` SET `meta_key` = 'xxxx_user-settings-time' WHERE `meta_key` = 'wp_user-settings-time';

Rinominiamo poi le tabelle tenendo però presente che l’elenco delle tabelle da modificare potrebbe non essere completo in quanto esistono plugin che creano tabelle custom che andranno quindi aggiunte al seguente elenco di query SQL per la modifica del prefisso. Quelle elencate di seguito, ad ogni modo, sono tutte le tabelle di un’installazione standard di WordPress, possiamo verificare se sono state create tabelle personalizzate direttamente sul client MySQL.

Una volta lanciati questi comandi, il sito smetterà di funzionare e gli utenti visualizzeranno la pagina di installazione, preparatevi quindi già a modificare il file wp-config.php come illustrato di seguito, in modo che il sito rimanga offline per più breve tempo possibile.

# Rinominiamo le tabelle
RENAME TABLE `wp_commentmeta` TO `xxxx_commentmeta`;
RENAME TABLE `wp_comments` TO `xxxx_comments`;
RENAME TABLE `wp_links` TO `xxxx_links`;
RENAME TABLE `wp_options` TO `xxxx_options`;
RENAME TABLE `wp_postmeta` TO `xxxx_postmeta`;
RENAME TABLE `wp_posts` TO `xxxx_posts`;
RENAME TABLE `wp_termmeta` TO `xxxx_termmeta`;
RENAME TABLE `wp_terms` TO `xxxx_terms`;
RENAME TABLE `wp_term_relationships` TO `xxxx_term_relationships`;
RENAME TABLE `wp_term_taxonomy` TO `xxxx_term_taxonomy`;
RENAME TABLE `wp_usermeta` TO `xxxx_usermeta`;
RENAME TABLE `wp_users` TO `xxxx_users`;

A questo punto sarà possibile modificare anche il file wp-config.php con il nuovo prefisso.

$table_prefix  = 'xxxx_';

Una volta completati questi passaggi il vostro sito WordPress riprenderà a funzionare con il nuovo prefisso, testate il tutto per accertarvi che non si presentino problemi, soprattutto ad accedere all’area di amministrazione. Se tutto è andato a buon fine potrete cancellare il backup del database e del file wp-config.php che avete salvato in precedenza. In caso contrario ripristinate database e file wp-config.php per indagare poi su quale possa essere stata la causa che ha fatto andare storta l’operazione.


Pubblicato

in

da

Tag:

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *