La base de datos de WordPress es el lugar en donde se almacenan todos los datos, por lo que es un objetivo habitual para los hackers y scripts malintencionados que escanean los sitios web para encontrar vulnerabilidades. Las tablas de WordPress incorporan por defecto el prefijo wp_ en todas sus tablas, por lo que los atacantes ya saben de antemano las tablas de la base de datos que han de modificar. Podemos cambiar con facilidad el prefijo de las tablas de la base de datos siguiendo estos pasos.
Contenidos
Copia de seguridad
Lo primero es realizar una copia de seguridad de la base de datos, por lo que debemos entrar en phpMyAdmin y realizarla. También podemos utilizar algún método alternativo si lo preferimos.
Cambiar el prefijo de las tablas en el archivo wp-config.php
Conéctate mediante FTP al directorio raíz de tu instalación se WordPress. Lo que vamos a hacer es cambiar el prefijo de las tablas de la base de datos editando el archivo wp-config.php. El nuevo nombre solamente podrá contener letras números y guiones bajos. En este ejemplo vamos a cambiar el prefijo «wp_» por el de «nuevo_«. Buscamos la variable $table _prefix y le asignamos el valor «nuevo_» tal que así:
$table_prefix = 'nuevo_';
Cambiar el nombre de las tablas en la base de datos
Podemos editar la base de datos usando phpMyAdmin. Lo que debemos hacer es cambiar el prefijo de todas las tablas de la base de datos por el nuevo.
Las tablas que WordPress usa por defecto son: wp_commentmeta, wp_comments, wp_links, wp_options, wp_postmeta, wp_posts, wp_terms, wp_term_relationships, wp_term_taxonomy, wp_usermeta y wp_users.
Podemos cambiar el prefijo manualmente o mediante una consulta:
RENAME table `wp_commentmeta` TO `nuevo__commentmeta`;
RENAME table `wp_comments` TO `nuevo__comments`;
RENAME table `wp_links` TO `nuevo__links`;
RENAME table `wp_options` TO `nuevo__options`;
RENAME table `wp_postmeta` TO `nuevo__postmeta`;
RENAME table `wp_posts` TO `nuevo__posts`;
RENAME table `wp_terms` TO `nuevo__terms`;
RENAME table `wp_term_relationships` TO `nuevo__term_relationships`;
RENAME table `wp_term_taxonomy` TO `nuevo__term_taxonomy`;
RENAME table `wp_usermeta` TO `nuevo__usermeta`;
RENAME table `wp_users` TO `nuevo__users`;
Si tenemos algún plugin que utilice alguna tabla personalizada debemos cambiar también su prefijo bien sea manualmente o con otra consulta:
RENAME table `wp_tablaPersonalizada` TO `nuevo__tablaPersonalizada`;
Cambiamos los datos de las tablas de opciones y los datos de usuario
El siguiente paso es cambiar los datos de cualquier campo de la tabla de opciones que use el prefijo «wp_» por el nuevo prefijo. La tabla se llamará ahora «nuevo_options«. Necesitamos cambiar los campos necesarios uno a uno, aunque también podemos filtrarlos mediante la siguiente consulta para cambiarlos posteriormente con más facilidad:
SELECT * FROM `nuevo_options` WHERE `option_name` LIKE '%wp_%'
Lo mismo sucede con los datos de la tabla «wp_userMeta«, ahora llamada «nuevo_userMeta«. Filtramos los campos con la siguiente consulta y reemplazamos cualquier ocurrencia de wp_ por el nuevo prefijo;
SELECT * FROM `nuevo_usermeta` WHERE `meta_key` LIKE '%wp_%'
Finalizando y métodos alternativos
Ahora solamente tenemos que probar el sitio para comprobar que funciona correctamente. Es caso de que falle algo siempre disponemos de la copia de seguridad de la base de datos que hemos realizado.
También podemos utilizar algún Plugin como Sucuru Security o All In One WP Security para cambiar el nombre de las tablas, aunque si queremos evitar la instalación de plugins y nuestra prioridad es la minimizar los añadidos, es más recomendable el método manual.