Siempre decimos que uno de los básicos a la hora de asegurar tu sitio es no dar información gratis y ¿qué información da WordPress gratis a los posibles hackers?, pues en la versión actual solo el número de versión, incluido en el fichero readme.txt de tu instalación y, acuérdate, el prefijo de la base de datos, que por defecto viene marcado a «wp_» en el fichero \’wp-config.php
\’ creado en la instalación a partir de \’wp-config-sample.php
\’.
Eliminar el fichero readme.txt
puedes hacerlo en cualquier momento pero ¿y si no te acordaste de cambiar el prefijo de la base de datos en el momento de la instalación?, ¿puedes hacerlo ahora? …
Pues si, no solo puedes sino que debes hacerlo. Cuando un hacker trate de atacar tu sitio mediante una injección SQL lo primero que va a hacer es comprobar su las tablas de tu base de datos empiezan por \’wp_\’ pues los nombres de las tablas de WordPress son de sobra conocidas (wp_options, wp_posts, wp_comments, etc).
Bueno, no sufras, vamos a cambiar el prefijo ahora mismo, solo necesitas acceso al fichero \’wp-config.php
\’ para editarlo y a phpMyAdmin, algo habitual desde el panel de tu alojamiento, no vamos a tardar más de 10 minutos.
¡Ah!, y como siempre, antes haz copia de la base de datos, eso que no se te olvide por si metes la pata en algún paso.
Nota preliminar: este proceso es para instalaciones ya finalizadas, si aún no has instalado WordPress al hacerlo te pedirá un prefijo para la base de datos, simplemente elige uno poco predecible.
1. Modifica el archivo wp-config.php
Busca la sección que dice esto:
/** * Prefijo de la base de datos de WordPress. * * Cambia el prefijo si deseas instalar multiples blogs en una sola base de datos. * Emplea solo números, letras y guión bajo. */ $table_prefix = \'wp_\';
Aquí es donde vamos al cambiar el prefijo, y lo ideal es usar una cadena que sea difícil de identificar, cuanto más mejor, por ejemplo \’JUJp4ExX651j\’. Asi que sustituimos el predecible \’_wp\’ por esto:
/** * Prefijo de la base de datos de WordPress. * * Cambia el prefijo si deseas instalar multiples blogs en una sola base de datos. * Emplea solo números, letras y guión bajo. */ $table_prefix = \'JUJp4ExX651j_\';
2. Cambiamos los nombres de las tablas de la base de datos
Como en el paso anterior hemos dicho a WordPress que el prefijo de las tablas es distinto al que tienen las existentes no te sorprendas si al acceder a tu sitio te da error, ¡es lo normal!, lo raro sería lo contrario.
Cuando instalas WordPress se añaden nada menos que 11 tablas estándar por defecto en tu base de datos. Luego, si instalas plugins, incluso con algunos temas, la lista va creciendo. Acede a phpMyAdmin y revisa en la lista de la izquierda la lista de tablas de tu base de datos y verás, por lo menos, las 11 originales (aunque seguro que verás más).
Bueno, pues como ya estamos dentro de phpMyAdin elegimos la pestaña SQL y luego el comando RENAME para renombrar rápidamente las tablas de nuestra base de datos, que es lo que toca ahora.
Con los siguientes comandos renombramos las 11 tablas originales de WordPress, recuerda que si tienes más tablas tendrás que añadir una línea similar por cada una adicional ¿entendido?.
Vamos a ello, ejecuta el comando de abajo, solo cambiando el prefijo que yo he puesto aquí al azar por el que tu hayas elegido en el paso anterior.:
RENAME table `wp_commentmeta` TO `JUJp4ExX651j_commentmeta`; RENAME table `wp_comments` TO `JUJp4ExX651j_comments`; RENAME table `wp_links` TO `JUJp4ExX651j_links`; RENAME table `wp_options` TO `JUJp4ExX651j_options`; RENAME table `wp_postmeta` TO `JUJp4ExX651j_postmeta`; RENAME table `wp_posts` TO `JUJp4ExX651j_posts`; RENAME table `wp_terms` TO `JUJp4ExX651j_terms`; RENAME table `wp_term_relationships` TO `JUJp4ExX651j_term_relationships`; RENAME table `wp_term_taxonomy` TO `JUJp4ExX651j_term_taxonomy`; RENAME table `wp_usermeta` TO `JUJp4ExX651j_usermeta`; RENAME table `wp_users` TO `JUJp4ExX651j_users`;
Luego le das a ‘Go’ y tus tablas quedan renombradas de golpe, ya casi hemos terminado.
3. Modifica la tabla wp_options
La tabla \’wp_options\’ contiene por lo menos un valor que hace referencia a los viejos prefijos de tabla así que hay que cambiarlo. De nuevo ejecutaremos un comando SQL que nos muestre todos los valores de esta tabla que contengan los nombres viejos.
Vamos de nuevo a la pestaña SQL y en la parte superior introducimos lo siguiente, de nuevo cambiando mi cadena aleatoria por la tuya.:
SELECT * FROM `JUJp4ExX651j_options` WHERE `option_name` LIKE \'%wp_%\'
Cuando veas los resultados edita el \’option_name\’ para cambiar \’wp\’ a la cadena que elegiste. O sea, que si uno de los \’option_names\’ es, por ejemplo, \’wp_user_roles\’, lo cambias a \’JUJp4ExX651j_user_roles\’, para que haga la referencia a los nuevos nombres de tablas.
¡Venga, que ya terminamos!
4. Modifica la tabla wp_usermeta
Al igual que antes, también en esta tabla hay referencias a «lo antiguo» así que de nuevo hay que ejecutar un comando para terminar el proceso, así que tecleamos lo siguiente para saber lo que nos toca cambiar:
SELECT * FROM `JUJp4ExX651j_usermeta` WHERE `meta_key` LIKE \'%wp_%\'
Ahora lo que toca es cambiar el \’meta_key\’ de cada resultado para que tenga nuestra cadena «anti-hackers».
¡Ea ya está!. Ya puedes ir al Escritorio de tu WordPress para comprobar que todo funcione y sabiendo que estás un poco más seguro ante inyecciones SQL.
Nota final: de nuevo, y como en cada ocasión que realices modificaciones en tu WordPress, te recuerdo que hagas copia de seguridad de la base de datos antes de cambiar nada, luego no vengas quejándote.