Come cambiare il prefisso delle tabelle di WordPress

Gli attacchi alle installazioni di WordPress prendono sempre in considerazione un punto debole: il fatto che spessissimo le tabelle del database hanno per tutti gli utenti gli stessi nomi. In questo articolo spiego come rendere più difficile la vita a chi vuole fare danni.

wpdb

In una installazione di WordPress, le tabelle del database hanno generalmente un nome che comincia con wp-: dal punto della sicurezza questo è un rischio perché un possibile malintenzionato sferra il suo attacco presumendo che le tabelle abbiano questo prefisso. Per questo motivo, quando si installa questo CMS è bene non utilizzarlo oppure, a installazione avvenuta, cambiarlo.

Pur essendoci almeno un plugin che faccia questa operazione (che io personalmente non ho testato: sicuramente funzionerà, ma io non so assicurarvelo), ho preferito procedere manualmente: come avrete capito da altri articoli, a me non piacciono gli automatismi quando si tratta di mettere mano a situazioni delicate e poi procedendo con le proprie mani si impara sempre. Dopo essermi documentato in rete e aver avuto conferma da più parti, ho cambiato anche io il mio prefisso wp- che mi portavo dietro da qualche anno. Vista la media complessità dell’operazione, mi scrivo quello che ho fatto e lo condivido con voi. Se avete deciso di seguire queste note personali, prestate la massima attenzione alle operazioni che fate perché lavorerete nel cuore di WordPress, dunque ogni responsabilità è vostra.

Fare un backup completo del database

Mi sembra ovvio e quasi superfluo dirlo: bisogna lavorare in serenità, specie quando si fanno operazioni del genere. Fatevi un bel backup e andate tranquilli. Se fate danni, potete ripristinare il database con questo file.

Mettete in pausa il blog

Anche se non vi sembra un’operazione necessaria, la reputo importante perché – se dopo aver modificato il file wp-config.php lo inviate al server e se non avendo ancora cambiato i nomi alle tabelle un visitatore dovesse accedere al blog – si ritroverebbe con l’interfaccia di installazione di WordPress (sempre che non abbiate cancellato il file install.php). Un bel problema! Non utilizzate quindi, in questo caso, plugin che rendano inaccessibile il blog, ma un intervento semplice ed efficace su .htaccess. In una mia pagina wiki spiego come farlo.
Mettere in pausa il blog significa non far trovare il blog sottosopra ai vostri lettori, ma visualizzare una pagina statica (in quella pagina wiki c’è un esempio) dove li informate che ci state lavorando.

Modificate il file wp-config.php

Iniziamo con le operazioni di modifica vere e proprie. Aprite il vostro attuale file wp-config.php, che contiene le informazioni di base della vostra installazione. Cercate la riga

$table_prefix  = 'wp_';

e modificate quel wp_ utilizzando solo numeri, lettere e underscore _. Non ha importanza la lunghezza. Salvate il file.
Per questo tutorial, facciamo conto che abbiate scelto di usare il prefisso xs73_ per le tabelle.

Note
A questo punto, se avete messo in pausa il blog, potete anche uploadare il file nel server, altrimenti non fatelo adesso.

Rinominate le tabelle nel database

Andate in phpMyAdmin e visualizzate il database della vostra installazione di WordPress. Dobbiamo cambiare adesso tutti i nomi delle tabelle: quel wp_ dovrà diventare xs73_.

Fate clic sul pulsante SQL e nel campo grande inserite questo comando:

RENAME TABLE wp_comments TO xs73_comments;

Come si vedrà, la sintassi di questi comandi è molto semplice da capire, per cui non la commento. Premete sul pulsante “Esegui”. Il gestore del database cambierà immediatamente il nome alla tabella e vi dirà che l’operazione è stata eseguita con successo.
Fate la stessa operazione per tutte le restanti tabelle, sia per quelle del core di WordPress che per quelle degli eventuali plugin. Le tabelle standard di WordPress sono 11; vi elenco qui tutte le righe da inviare una per una per il cambio del nome (non so dirvi se possono essere inviate insieme e occhio che ho reinserito anche la precedente riga che forse avete già inviato). Ricordatevi di modificarle in armonia col prefisso che avete scelto nel file wp-config.php:

RENAME TABLE wp_commentmeta TO xs73_commentmeta;
RENAME TABLE wp_comments TO xs73_comments;
RENAME TABLE wp_links TO xs73_links;
RENAME TABLE wp_options TO xs73_options;
RENAME TABLE wp_postmeta TO xs73_postmeta;
RENAME TABLE wp_posts TO xs73_posts;
RENAME TABLE wp_terms TO xs73_terms;
RENAME TABLE wp_term_relationships TO xs73_term_relationships;
RENAME TABLE wp_term_taxonomy TO xs73_term_taxonomy;
RENAME TABLE wp_usermeta TO xs73_usermeta;
RENAME TABLE wp_users TO xs73_users;

Ripeto: potrebbero esserci altre tabelle oltre quelle elencate: il nome va cambiato su tutte.

La tabella wp-options

Bisogna ora modificare qualcosa nella tabella xs73_options (la vecchia wp_options). Tornate alla visualizzazione del vostro database di WordPress e fate clic sul pulsante “Mostra” relativo a questa tabella. Scorrete l’elenco dei dati della tabella fino a vedere la riga wp_user_roles: fate clic sul pulsante di modifica (quello con l’icona di una matita) e cambiatene il nome da wp_user_roles a xs73_user_roles. Fate clic su “Esegui”.

La tabella wp_usermeta

Anche qui ritornate al database di WordPress e fate clic sul pulsante “Mostra” relativo alla tabella xs73_usermeta (la vecchia wp_usermeta). Qui le voci da cambiare sono di più, per cui faremo una ricerca per facilitarci il compito.

Premete su SQL in cima, cancellate l’eventuale esempio che troverete già inserito e incollate questa riga:

SELECT * FROM `xs73_usermeta` WHERE `meta_key` LIKE 'wp_%'

Dovrebbe restituirvi in basso il risultato con alcuni record il cui nome inizia col vecchio prefisso. Il numero dei risultati può variare, magari se avete qualche utente registrato.
Cambiate il valore di “meta_key” in tutte le righe togliendo wp_ e premettendo xs73_. Ad esempio la prima riga da wp_autosave_draft_ids diventerà xs73_autosave_draft_ids.

Inviate al server il nuovo file wp-config.php

Finito col database, se non lo avete ancora fatto prima, sostituite il file wp-config.php del vostro server con quello che avete modificato all’inizio.

Avete finito. Recatevi nel vostro blog e verificate che tutto funzioni come sempre.

Autore: Aldo Latino

Aldo Latino usa con entusiasmo Linux nella distribuzione Ubuntu, è un appassionato di WordPress e si diletta a fare il blogger. Ha anche una lista dei desideri. Per altre informazioni visita la sua .

14 pensieri riguardo “Come cambiare il prefisso delle tabelle di WordPress”

  1. Salve, e grazie.
    Riesumo questo storico post per fare una domanda OT – non sono simpatico :mrgreen: ?-
    Ravanando in giro ho trovato info frammentarie e forse mi potesti indirizzare meglio, la funzione che richiederei sarebbe il comando per rinominare non tanto le tabelle, da un pò lo si fà in fase d’installazione, ma quanto le cartelle admin-content- etc, anche per non doverle più spostare e dare quindi una ‘sicurezza passiva’ in più.

    mille grazie

    1. Ciao,
      sì, è possibile spostare (o rinominare) la directory wp-content inserendo nel file wp-config.php queste due righe:

      define ('WP_CONTENT_DIR','/percorso/assoluto/alla/directory');
      define ('WP_CONTENT_URL','http://example.com/url/verso/la/directory');

      e tutte e due le righe senza lo slash finale. Considera, però, che qualche plugin potrebbe richiamare direttamente la directory wp-content/plugins/ senza utilizzare la costante definita. Quindi occhio.

      Per le altre due directory (wp-admin e wp-includes), afaik non è possibile.

  2. Mille grazzissime,
    preciso ed infallibilmente didattico as usual – as needed,
    implicitamente mi stai dicendo che rinominare quelle 3 cartelle/ Directory di WordPress
    non sarebbe consogliabile=possibile neanche via e tool omologo, vero?

    grazie ancora

  3. La riga wp_user_roles non esiste nel mio php. dopo avere concluso tutte le operazioni il sito funziona omettendo la modifica in “wp-option”

      1. Si era un mio errore. non sfogliavo le pagine del database.Ora ho modificato il tutto, il sito funziona ma mi da un errore se provo ad accedere alla bacheca.
        Errore nello stabilire una connessione al database

        1. Ora ho sistemato la connessione ma ho ancora qualche problema.

          È stato possibile connettersi al server del database (il che significa che il nome utente e la password sono ok) ma non è stato possibile selezionare il database miki83_xs73.

          Si è certi che esista?

          L’utente miki83_wrdp3 ha i permessi di usare il database miki83_xs73?

          Su alcuni sistemi il nome del database va fatto precedere dal nome utente, così da avere un formato simile a username_miki83_xs73. Potrebbe essere questo il problema?

          1. Ho ripristinato tutto con una nuova installazione.Ho effettuato tutta la procedura e questa volta tutto funziona perfettamente. Molto strano. l’unica procedura in più che avevo effettuato prima, è stata quella di cambiare il nome del database dalla voce “Operazioni”, > Rinomina il database come: xs73_. Avevo notato che era cambiato solo il nome del databse, non quello delle tabelle.
            Ti ringrazio per l’interessamento.

I commenti sono chiusi