Proteger tu sitio de WordPress contra ataques de inyección SQL es necesario para salvaguardar tus datos y mantener la confianza de tus visitantes.
La inyección SQL es una técnica común utilizada por los hackers para atacar tu base de datos. Una vez que lo hacen, los hackers pueden leer tus datos sensibles, modificarlos y tomar el control de toda tu base de datos.
Para proteger tu sitio web de esta amenaza, es crucial implementar medidas de seguridad sólidas en tu sitio web.
En WPBeginner, nos tomamos la seguridad muy en serio y hemos ido más allá para proteger nuestro sitio de hackers y malware. Muchas de las prácticas de seguridad que recomendamos contra los ataques de inyección SQL son métodos que hemos utilizado nosotros mismos con éxito.
En este artículo, compartiremos algunos consejos prácticos para prevenir ataques de inyección SQL en WordPress, paso a paso.

¿Por qué prevenir ataques de inyección SQL en WordPress?
SQL significa Structured Query Language (Lenguaje de Consulta Estructurada), que es un lenguaje de programación que se comunica con la base de datos de tu sitio de WordPress. Sin esta función, tu sitio no puede generar ningún contenido dinámico.
Sin embargo, la entrada no autorizada de usuarios, el software desactualizado o la revelación de información sensible pueden causar vulnerabilidades de seguridad y facilitar que los hackers realicen ataques de inyección SQL.
Este ataque se dirige a tu servidor de base de datos y agrega código o sentencias maliciosas a tu SQL. Al hacerlo, los hackers pueden usar información sensible almacenada en tu base de datos, como datos de usuarios, para robo de identidad, apropiación de cuentas, fraude financiero y más.
También pueden cambiar entradas de la base de datos o permisos de cuenta y realizar ataques DDoS, lo que dificulta que los usuarios reales visiten tu sitio web.
Esto puede dañar la confianza del cliente, afectar negativamente la experiencia del usuario y disminuir el tráfico del sitio web, lo que será perjudicial para el crecimiento de su pequeño negocio.
Dicho esto, veamos algunos consejos prácticos que pueden prevenir ataques de inyección SQL en WordPress. Aquí hay un resumen rápido de lo que hablaremos en este artículo:
- Realiza actualizaciones del sitio regularmente y usa un firewall
- Oculta tu versión de WordPress
- Cambia el prefijo de la base de datos de WordPress
- Valida los datos del usuario
- Limita el acceso y los permisos de los roles de usuario
- Crea mensajes de error de base de datos personalizados
- Elimina la funcionalidad innecesaria de la base de datos
Nota: Antes de realizar cualquier cambio en tu base de datos como medida preventiva, te recomendamos crear una copia de seguridad. De esta manera, si algo sale mal, podrás usar la copia de seguridad para solucionarlo. Para más detalles, consulta nuestro tutorial sobre cómo hacer una copia de seguridad manual de la base de datos de WordPress.
1. Realiza actualizaciones del sitio regularmente y usa un firewall
Una forma eficaz de prevenir ataques de inyección SQL es actualizar regularmente tu sitio de WordPress a la última versión. Estas actualizaciones a menudo parchean vulnerabilidades de seguridad, incluidos problemas de software de base de datos, lo que dificulta que los hackers ataquen tu sitio.
Si estás utilizando una versión desactualizada de WordPress, te recomendamos habilitar las actualizaciones automáticas para la última versión visitando la página Panel » Actualizaciones.
Aquí, simplemente haz clic en el enlace ‘Habilitar actualizaciones automáticas para todas las nuevas versiones de WordPress’. Ahora, todas las actualizaciones importantes se instalarán en tu sitio tan pronto como se lancen.

Para obtener más información, te puede interesar consultar nuestra guía para principiantes sobre cómo actualizar WordPress de forma segura.
Una vez que hayas hecho eso, también puedes agregar un firewall para mayor seguridad. Esta función actúa como un escudo entre tu sitio y el tráfico entrante, y bloquea amenazas de seguridad comunes, incluidos los ataques SQL, antes de que lleguen a tu sitio web.
Si administras un pequeño negocio en línea, te recomendamos Sucuri, que es una de las mejores opciones de software de firewall para WordPress en el mercado. Ofrece un firewall a nivel de aplicación, prevención de fuerza bruta, así como servicios de eliminación de malware y listas negras, lo que la convierte en una excelente opción.

Tenemos experiencia de primera mano con la herramienta. Incluso nos ayudó a bloquear 450,000 ataques de WordPress en nuestro sitio web en el pasado.
Dicho esto, Sucuri podría no ser lo suficientemente potente para sitios más grandes y con mucho tráfico. En ese caso, podrías considerar Cloudflare, que puede ofrecerte funciones de seguridad además de una impresionante red de entrega de contenido (CDN).
Si no estás seguro de qué opción es la mejor para tu sitio web, consulta nuestro artículo sobre por qué cambiamos de Sucuri a Cloudflare o nuestra comparación de Sucuri vs Cloudflare.
2. Oculta tu versión de WordPress
Por defecto, WordPress muestra el número de versión actual del software que utilizas en tu sitio web. Por ejemplo, si estás usando WordPress 6.4, entonces esta versión se mostrará en tu sitio para su seguimiento.
Sin embargo, la visibilidad pública del número de tu versión puede crear amenazas de seguridad y facilitar que los hackers realicen ataques de inyección SQL en WordPress.

Esto se debe a que cada versión de WordPress tiene sus propias vulnerabilidades únicas que los atacantes pueden explotar después de descubrir tu versión. Esto les permitirá agregar fragmentos de código malicioso a tu sitio a través de campos de entrada vulnerables.
Puedes eliminar fácilmente el número de versión de tu sitio agregando el siguiente fragmento de código a tu archivo functions.php.
add_filter('the_generator', '__return_empty_string');
Una vez que hagas eso, los hackers no podrán encontrar el número de tu versión de WordPress a través de escáneres automáticos ni de ninguna otra manera.
Nota: Ten en cuenta que un pequeño error al agregar código puede hacer que tu sitio web sea inaccesible. Es por eso que recomendamos WPCode. Es el mejor plugin de fragmentos de código que hace que agregar código personalizado a tu sitio sea súper seguro y fácil.
Para más detalles, consulta nuestro tutorial sobre la forma correcta de eliminar el número de versión de WordPress.
3. Cambiar el prefijo de la base de datos de WordPress
Por defecto, WordPress agrega el prefijo wp_ a todos tus archivos de base de datos, lo que facilita que los hackers planeen un ataque al dirigirse al prefijo.
La forma más fácil de prevenir ataques de inyección SQL es cambiar el prefijo predeterminado de la base de datos por algo único que los hackers no puedan adivinar.
Puedes hacer esto fácilmente conectando tu sitio web usando FTP. Después de eso, abre el archivo wp-config.php y busca la línea para cambiar $table_prefix. Luego, puedes cambiarlo de simplemente el predeterminado wp_ a algo más como esto: wp_a123456_.
$table_prefix = 'wp_a123456_';
A continuación, debes visitar el cPanel de tu cuenta de alojamiento web. Para este tutorial, usaremos Bluehost. Sin embargo, tu cPanel puede verse un poco diferente dependiendo de tu compañía de alojamiento web.
Aquí, cambia a la pestaña 'Avanzado' y haz clic en el botón 'Administrar' junto a la sección 'PHPMyAdmin'.

Esto abrirá una nueva página donde debes seleccionar el nombre de tu base de datos de la columna izquierda y cambiar a la pestaña 'SQL' desde la parte superior.
Después de eso, puedes agregar la siguiente consulta SQL en el cuadro de texto.

Solo ten en cuenta cambiar el prefijo de la base de datos por el que elegiste al editar el archivo wp-config.php.
RENAME table `wp_comments` TO `wp_a123456_comments`;
RENAME table `wp_links` TO `wp_a123456_links`;
RENAME table `wp_options` TO `wp_a123456_options`;
RENAME table `wp_postmeta` TO `wp_a123456_postmeta`;
RENAME table `wp_RENAME table `wp_commentmeta` TO `wp_a123456_commentmeta`;
posts` TO `wp_a123456_posts`;
RENAME table `wp_terms` TO `wp_a123456_terms`;
RENAME table `wp_termmeta` TO `wp_a123456_termmeta`;
RENAME table `wp_term_relationships` TO `wp_a123456_term_relationships`;
RENAME table `wp_term_taxonomy` TO `wp_a123456_term_taxonomy`;
RENAME table `wp_usermeta` TO `wp_a123456_usermeta`;
RENAME table `wp_users` TO `wp_a123456_users`;
Para más instrucciones, puedes ver nuestro tutorial sobre cómo cambiar el prefijo de la base de datos de WordPress para mejorar la seguridad.
4. Validar datos del usuario
Los hackers suelen inyectar ataques SQL en tu sitio web utilizando campos para ingresar datos de usuario, como secciones de comentarios o campos de formularios de contacto.
Es por eso que es importante validar todos los datos enviados en tu blog de WordPress. Esto significa que los datos del usuario no se enviarán en tu sitio si no siguen un formato específico.
Por ejemplo, un usuario no podrá enviar su formulario si el campo de dirección de correo electrónico no tiene el símbolo '@'. Al agregar esta validación a la mayoría de tus campos de formulario, puedes prevenir ataques de inyección SQL.

Para hacer esto, necesitarás Formidable Forms, que es un plugin avanzado para crear formularios. Viene con una opción de 'Formato de máscara de entrada' donde puedes agregar el formato que los usuarios deben seguir para enviar los datos del campo del formulario.
Puedes agregar un formato específico para números de teléfono o campos de texto individuales.

Si no desea validar los campos de su formulario, le recomendamos WPForms porque es el mejor plugin de formularios de contacto que viene con protección completa contra spam y soporte para Google reCAPTCHA.
También le permite agregar menús desplegables y casillas de verificación a sus formularios, lo que dificulta que los hackers agreguen datos maliciosos.

Para más detalles, consulte nuestro tutorial sobre cómo crear un formulario de contacto seguro en WordPress.
5. Limitar el acceso y los permisos de los roles de usuario
Otro consejo para prevenir ataques de inyección SQL en WordPress es limitar el acceso de los usuarios a su sitio web.
Por ejemplo, si tiene un blog de varios autores, entonces tendrá varios autores junto con suscriptores y administradores. En ese caso, puede mejorar la seguridad del sitio limitando el acceso completo de administrador solo al administrador.
Puede restringir todos los demás roles de usuario a funciones específicas que necesitarán para realizar su trabajo. Esto reducirá el acceso de los usuarios a su base de datos y prevendrá ataques de inyección SQL.
Puedes hacer esto con el plugin gratuito Remove Dashboard Access. Después de activarlo, simplemente visita la página Ajustes » Acceso al Panel, donde puedes decidir qué roles de usuario tienen acceso al panel.

Si deseas limitar a los usuarios según sus capacidades, puedes consultar nuestro tutorial sobre cómo agregar o eliminar capacidades a los roles de usuario en WordPress.
De manera similar, también puedes limitar a los autores a sus propias publicaciones en tu área de administración para mayor seguridad.
6. Crea mensajes de error de base de datos personalizados
A veces, tus usuarios pueden encontrarse con un error de base de datos en tu sitio web, lo que puede mostrar información importante sobre tu base de datos, haciéndola vulnerable a ataques de inyección SQL.
En ese caso, recomendamos crear un mensaje de error de base de datos personalizado que se mostrará a los usuarios cuando se encuentren con este error común. Para hacer esto, necesitarás copiar y pegar el siguiente contenido en una aplicación de bloc de notas y guardar el archivo como 'db-error.php'.
<?php // custom WordPress database error page
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 600'); // 1 hour = 3600 seconds
// If you wish to email yourself upon an error
// mail("your@email.com", "Database Error", "There is a problem with the database!", "From: Db Error Watching");
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Database Error</title>
<style>
body { padding: 20px; background: red; color: white; font-size: 60px; }
</style>
</head>
<body>
You got problems.
</body>
Después de eso, conecta tu sitio a un programa FTP y sube el archivo que acabas de crear al directorio /wp-content/ de tu sitio.
Ahora, cuando los usuarios encuentren un error de base de datos en tu sitio web, verán un mensaje de error informándoles sobre el problema sin revelar ninguna información sensible.

Además, el título "Error de base de datos" se mostrará en la pestaña del navegador web.
Para más detalles, consulta nuestro tutorial sobre cómo agregar una página de error de base de datos personalizada en WordPress.
7. Eliminar funcionalidad innecesaria de la base de datos
Para prevenir ataques de inyección SQL, también deberías intentar eliminar toda la funcionalidad y los archivos de la base de datos que no necesites en tu sitio web.
Por ejemplo, puedes eliminar tablas innecesarias, borradores o comentarios no aprobados que puedan hacer que tu base de datos sea susceptible a los hackers.
Para eliminar funcionalidad innecesaria de la base de datos, recomendamos WP-Optimize. Es un plugin increíble que elimina tablas innecesarias, revisiones de publicaciones, borradores, comentarios eliminados, publicaciones eliminadas, pingbacks, metadatos de publicaciones y mucho más.

Elimina todos los archivos que no necesitas y optimiza tu base de datos para que sea más segura y rápida. Para más detalles, consulta nuestra guía para principiantes sobre cómo optimizar tu base de datos de WordPress.
Esperamos que este artículo te haya ayudado a aprender cómo prevenir ataques de inyección SQL en WordPress. También te puede interesar consultar nuestra guía para principiantes sobre cómo verificar las actualizaciones de seguridad de WordPress o nuestra guía definitiva de seguridad de WordPress.
Si te gustó este artículo, suscríbete a nuestro canal de YouTube para obtener tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.

Moinuddin Waheed
Esto es nuevo para mí, que puedo ocultar fácilmente la versión de WordPress, lo que evitará que los hackers adivinen las vulnerabilidades basándose en las versiones de WordPress y sus fallos.
Excelentes consejos para prevenir inyecciones SQL en el sitio web.
Implementaré estos trucos para hacer que mi sitio web sea a prueba de cualquier vulnerabilidad de seguridad.
Oyatogun Oluwaseun Samuel
Para mí, ocultar la versión de WordPress es algo nuevo. Cada versión de WordPress viene con su propia vulnerabilidad, por lo que ocultar el número de versión dejará a los hackers sin saber qué versión de WordPress se está utilizando, por no hablar de la utilización de vulnerabilidades relacionadas. Gracias por el aviso. También creo que si estás desarrollando un plugin que recopila la entrada del usuario, es prudente escapar las entradas del usuario (después de la validación normal) que se insertarán en la base de datos.
Jiří Vaněk
La seguridad de WordPress es lo más importante para mí. Relacionado con eso está SQL, a lo que nunca le he prestado mucha atención. Gracias por esta lista de excelentes consejos. Voy a revisar mi blog de inmediato para ver qué puedo mejorar según tu lista. Al menos intentaré ocultar la versión y demás.