La base de datos WordPress es el cerebro de tu instalación, ya que almacena toda la información que vayas creando. Esto la convierte en el objetivo principal de los atacantes.
WordPress es un software de código abierto y todo el mundo tiene acceso a los nombres por defecto de las tablas que forman su base de datos. Cualquier individuo con malas intenciones y suficientes conocimientos puede aprovechar vulnerabilidades existentes (habitualmente en plugins o temas mal programados) para realizar un ataque a tu instalación. Como el atacante conoce los nombres de tus tablas, puede conseguir eliminar todos los contenidos de estas mediante inyección de SQL.

Una forma muy sencilla de protegerse es mediante el uso de prefijos alternativos para los nombres de las tablas. Si instalas WordPress por defecto, todas las tablas en tu base de datos tomarán el prefijo wp_
: wp_posts
, wp_postmeta
, wp_users
, wp_usermeta
, wp_comments
, etc. Como ya he dicho, una buena práctica de seguridad es cambiar este prefijo wp_
por otro prefijo diferente.
Por ejemplo, podríamos decidir escoger el prefijo 1a2b3c_
como alternativa. La pregunta es, ¿cómo puedo cambiar el prefijo por defecto wp_
por el nuevo prefijo 1a2b3c_
? Ahora mismo te lo explico.
Modificar el archivo wp-config.php
El mejor momento para tomar la decisión de usar un prefijo diferente a wp_
es antes de instalar WordPress. En este caso solo tenemos que modificar una línea del archivo wp-config.php
(ya te hablé de él aquí). En concreto esta línea:
$table_prefix = 'wp_';
que la cambiaremos, modificando el prefijo wp_
por el nuevo prefijo que hayamos escogido:
$table_prefix = '1a2b3c_';
Y ya está. Cuando realicemos el proceso de instalación de WordPress, este creará las tablas con el prefijo 1a2b3c_
y dejará todo listo.
Sin embargo, si partimos de una instalación que no es nueva y queremos hacer este cambio para añadir más seguridad, además de tocar el archivo wp-config.php
como te he explicado, tienes que cambiar los nombres de las tablas en la base de datos tú mismo.
Cambiar el prefijo en la base de datos
Una vez que tenemos el archivo wp-config.php
listo, hemos de modificar los nombres de las tablas en la base de datos. Esto solo lo haremos si partimos de una instalación ya creada con contenido. Para esto, tienes que ejecutar las siguientes sentencias SQL:
RENAME TABLE wp_links TO 1a2b3c_links; RENAME TABLE wp_commentmeta TO 1a2b3c_commentmeta; RENAME TABLE wp_comments TO 1a2b3c_comments; RENAME TABLE wp_options TO 1a2b3c_options; RENAME TABLE wp_postmeta TO 1a2b3c_postmeta; RENAME TABLE wp_posts TO 1a2b3c_posts; RENAME TABLE wp_term_relationships TO 1a2b3c_term_relationships; RENAME TABLE wp_term_taxonomy TO 1a2b3c_term_taxonomy; RENAME TABLE wp_termmeta TO 1a2b3c_termmeta; RENAME TABLE wp_terms TO 1a2b3c_terms; RENAME TABLE wp_usermeta TO 1a2b3c_usermeta; RENAME TABLE wp_users TO 1a2b3c_users;
Cada una de estas sentencias cambia el nombre a una de las tablas. Aquí te he puesto las sentencias para las tablas básicas de WordPress, pero ten en cuenta que tendrás que añadir más sentencias si tienes más tablas en tu base de datos. Esto sucede cuando usas plugins que usan tablas adicionales (algo muy común).

Y recuerda que si has escogido un prefijo diferente a 1a2b3c_
(algo que, por cierto, te recomiendo), tendrás que modificar las sentencias anteriores cambiando 1a2b3c_
por tu propio prefijo. Supongo que ya te había quedado claro, pero te lo recuerdo por si acaso.

Nelio Content
Estoy tan contento con Nelio Content que parece que me hayan pagado para hablar bién de él… pero es que también a ti te encantará: funciona como prometen, la programación automática de mensajes es increíble, la calidad/precio no tiene parangón y su equipo de soporte se siente como si fueran parte del tuyo.

Panozk
Cambiar meta informaciones en la base de datos
Cambiando los nombres de las tablas de la base de datos WordPress no hemos acabado. Mucha gente se queda aquí y luego se da cuenta de que aparecen los problemas.
Tanto la tabla wp_options
como la tabla wp_usermeta
(que serán 1a2b3c_options
y 1a2b3c_usermeta
con el nuevo prefijo) tienen filas en su interior que incluyen el prefijo por defecto wp_
en las columnas option_name
y meta_key
, respectivamente. Esto lo tenemos que cambiar también y usar el nuevo prefijo 1a2b3c_
.
Lo primero que debemos hacer es consultar cuales son estas filas. Mediante SQL es tan sencillo como ejecutar cada una de estas dos consultas por separado:
SELECT * FROM 1a2b3c_options WHERE option_name LIKE
'%wp_%';
SELECT * FROM 1a2b3c_usermeta WHERE meta_key LIKE
'%wp_%';
Después de esto puedes ir cambiando a mano cada uno de los resultados, o bien usar sentencias de actualización para ir más rápido. En concreto, para la tabla de options
como mínimo tendrás que cambiar las filas cuya columna option_names
tenga el valor wp_user_roles
:
UPDATE 1a2b3c_options SET option_name = '1a2b3c_user_roles'
WHERE option_name = 'wp_user_roles';
Y para la tabla usermeta
tendrás que hacer lo mismo para aquellas filas que tengan en la columna meta_key los valores wp_capabilities
, wp_user_level
y wp_user-settings
:
UPDATE 1a2b3c_usermeta SET meta_key = '1a2b3c_capabilities'
WHERE meta_key = 'wp_capabilities';
UPDATE 1a2b3c_usermeta SET meta_key = '1a2b3c_user_level'
WHERE meta_key = 'wp_user_level';
UPDATE 1a2b3c_usermeta SET meta_key = '1a2b3c_user-settings'
WHERE meta_key = 'wp_user-settings';
Si con las consultas encuentras más filas en estas tablas que tienen el option_name
o el meta_key
incluyendo el antiguo prefijo wp_
, tendrás que hacer más sentencias UPDATE
acorde a tus necesidades.
Haz una copia de seguridad antes de aplicar estos cambios. Es la única manera que tienes de poder recuperar el estado anterior de tu base de datos y volver atrás sin perder nada.
Alternativa: usar un plugin
Actualización: Parece ser que el plugin Change DB Prefix ha dejado de existir. Una alternativa puede ser Defender, de la gente de WPMUDev.
Como alternativa, si no estamos convencidos de usar SQL directamente en la base de datos, podemos probar el plugin Change DB Prefix para WordPress. Este plugin promete cambiar el prefijo en la base de datos para todas nuestras tablas sin problemas. Tan solo tienes que indicar el nuevo prefijo en la interfaz y listo.

Además, también te cambiará la linea en el archivo wp-config.php
sin que tengas que hacerlo tú. Eso si, para ello el archivo wp-config.php
tiene que tener los permisos de escritura habilitados. Si no es tu caso y falla, te recomiendo que mejor lo cambies tú a mano. Tampoco es un drama, ya que como has visto, sólo es una línea la que tienes que tocar.
Resumen final
En este artículo has podido ver la manera de cambiar el prefijo en los nombres de las tablas de tu instalación WordPress para añadir un pequeño plus seguridad adicional y, hasta cierto punto, protegerte contra ataques de inyección SQL.
En concreto, si aún no hemos instalado WordPress tan solo has de cambiar una línea en el archivo wp-config.php
. En cambio, si quieres aplicar esto en tu WordPress ya instalado y con contenido, tienes que cambiar tú el prefijo en el nombre de las tablas y también modificar el nombre de algunas filas en algunas tablas. Esto es algo tedioso, pero el plugin Change DB Prefix puede ayudarte.
Te recomiendo que pruebes esto y me comentes si has tenido algún problema. Recuerda que es posible que tu proveedor de alojamiento web ya haya utilizado un prefijo por defecto diferente a wp_
en el momento de la instalación de tu WordPress. Si esto es así, puedes estar contento ya que no tienes que hacer nada.
Imagen destacada de macinate.
Deja una respuesta