Proteger su sitio WordPress contra ataques de inyección SQL es necesario para salvaguardar sus datos y mantener la confianza de sus visitantes.
La inyección SQL es una técnica común utilizada por los hackers para atacar su 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 su sitio web de esta amenaza, es crucial aplicar fuertes medidas de seguridad en su 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 con éxito nosotros mismos.
En este artículo, compartiremos algunos consejos prácticos para prevenir ataques de inyección SQL en WordPress, paso a paso.
¿Por qué prevenir los ataques de inyección SQL en WordPress?
SQL significa Structured Query Language (Lenguaje de consulta estructurado), que es un lenguaje de programación que se comunica con la base de datos de su sitio WordPress. Sin esta función, su sitio no puede generar ningún contenido dinámico.
Sin embargo, la entrada no autorizada de datos por parte del usuario, un software obsoleto o la revelación de información sensible pueden causar una vulnerabilidad de seguridad y facilitar a los piratas informáticos la realización de ataques de inyección SQL.
Este ataque se dirige a su servidor de base de datos y añade código o sentencias maliciosas a su SQL. Al hacerlo, los hackers pueden utilizar la información confidencial almacenada en su base de datos, como los datos de usuario, para el robo de identidad, la toma de posesión de cuentas, el fraude financiero, etc.
También pueden cambiar las entradas de la base de datos o el permiso de la cuenta y realizar ataques DDoS, dificultando que los usuarios reales visiten su sitio web.
Esto puede dañar la confianza del cliente, impactar negativamente en la experiencia del usuario y disminuir el tráfico del sitio web, lo que será malo para el crecimiento de su pequeña empresa.
Dicho esto, echemos un vistazo a algunos consejos prácticos que pueden prevenir los ataques de inyección SQL en WordPress. He aquí un breve resumen de lo que vamos a hablar en este artículo:
- Perform Site Updates Regularly And Use a Firewall
- Hide Your WordPress Version
- Change the WordPress Database Prefix
- Validate User Data
- Limit User Role Access and Permissions
- Create Custom Database Error Messages
- Remove Unnecessary Database Functionality
- Bonus: Use WPBeginner Pro Services to Create a Secure Site
Nota: Antes de realizar cualquier cambio en su base de datos por prevención, le recomendamos que cree una copia de seguridad de la misma. De esta manera, si algo va mal, puede utilizar la copia de seguridad para solucionarlo. Para más detalles, consulta nuestro tutorial sobre cómo hacer una copia de seguridad de la base de datos de WordPress manualmente.
1. Actualice el sitio regularmente y utilice un cortafuegos
Una forma eficaz de prevenir los ataques de inyección SQL es actualizar periódicamente su sitio de WordPress a la última versión. Estas actualizaciones suelen parchear vulnerabilidades de seguridad, incluidos problemas de software de bases de datos, lo que dificulta que los hackers ataquen tu sitio.
Si utiliza una versión obsoleta de WordPress, le recomendamos que active las actualizaciones automáticas de la última versión visitando la página Panel de control ” Actualizaciones.
Aquí, simplemente haga clic en el enlace “Activar actualizaciones automáticas para todas las nuevas versiones de WordPress”. Ahora, todas las actualizaciones importantes se instalarán en tu sitio en cuanto se publiquen.
Para obtener más información, puede consultar nuestra guía para principiantes sobre cómo actualizar WordPress de forma segura.
Una vez hecho esto, también puedes añadir un cortafuegos para mayor seguridad. Esta función actúa como un escudo entre tu sitio y el tráfico entrante y bloquea las amenazas de seguridad habituales, incluidos los ataques SQL, antes de que lleguen a tu sitio web.
Si diriges un pequeño negocio online, te recomendamos Sucuri, que es una de las mejores opciones de software cortafuegos para WordPress del 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, por lo que es una gran opción.
Tenemos experiencia de primera mano con la herramienta. Incluso nos ayudó a bloquear 450.000 ataques de WordPress a nuestro sitio web en el pasado.
Dicho esto, Sucuri podría no ser lo suficientemente potente para sitios más grandes y de alto tráfico. En ese caso, puedes considerar Cloudflare, que puede ofrecerte funciones de seguridad, así como una impresionante red de distribución de contenidos (CDN).
Si no está seguro de cuál es la mejor opción para su sitio web, consulte nuestro artículo sobre por qué cambiamos de Sucuri a Cloudflare o nuestra comparativa Sucuri vs Cloudflare.
2. Ocultar la versión de WordPress
Por defecto, WordPress muestra el número de versión actual del software que utiliza en su sitio web. Por ejemplo, si utiliza WordPress 6.4, esta versión se mostrará en su sitio para su seguimiento.
Sin embargo, la visibilidad pública de su número de versión puede crear amenazas de seguridad y facilitar a los hackers la realización de 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 su versión. Esto les permitirá añadir fragmentos de código malicioso a su sitio a través de campos de entrada vulnerables.
Puede eliminar fácilmente el número de versión de su sitio añadiendo el siguiente fragmento de código a su archivo functions. php.
add_filter('the_generator', '__return_empty_string');
Una vez hecho esto, los hackers no podrán encontrar su número de versión de WordPress a través de escáneres automáticos ni de ninguna otra forma.
Nota: Tenga en cuenta que un pequeño error al añadir código puede hacer que su sitio web sea inaccesible. Por eso recomendamos WPCode. Es el mejor plugin de fragmentos de código que hace que la adición de código personalizado a su sitio super seguro y fácil.
Para más detalles, consulte 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 añade el prefijo wp_ a todos sus archivos de base de datos, lo que facilita a los hackers planear un ataque apuntando al prefijo.
La forma más sencilla de prevenir los ataques de inyección SQL es cambiar el prefijo predeterminado de la base de datos por algo único que los hackers no puedan adivinar.
Puede hacerlo fácilmente conectando su sitio web mediante FTP. Después de eso, abra el archivo wp-config.php y encontrar el cambio de la línea $table_prefix
. A continuación, puede cambiarlo de simplemente el valor predeterminado wp_
a algo más como esto: wp_a123456_
.
$table_prefix = 'wp_a123456_';
A continuación, debe visitar el cPanel de su cuenta de alojamiento web. Para este tutorial, utilizaremos Bluehost. Sin embargo, su cPanel puede parecer un poco diferente dependiendo de su empresa de alojamiento web.
Aquí, cambie a la pestaña “Avanzado” y haga clic en el botón “Administrar” situado junto a la sección “PHPMyAdmin”.
Se abrirá una nueva página en la que deberás seleccionar el nombre de tu base de datos en la columna de la izquierda y cambiar a la pestaña “SQL” en la parte superior.
A continuación, puede añadir la siguiente consulta SQL en el cuadro de texto.
No olvide cambiar el prefijo de la base de datos por el que haya elegido 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, puede consultar nuestro tutorial sobre cómo cambiar el prefijo de la base de datos de WordPress para mejorar la seguridad.
4. Validar datos de usuario
Los hackers suelen inyectar ataques SQL en su sitio web utilizando campos para introducir datos de usuarios, como secciones de comentarios o campos de formularios de contacto.
Por eso es importante validar todos los datos enviados a su blog de WordPress. Esto significa que los datos del usuario no se enviarán a su 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 ‘@’. Si añades esta validación a la mayoría de los campos del formulario, evitarás los ataques de inyección SQL.
Para ello, necesitará Formidable Forms, que es un plugin avanzado de creación de formularios. Viene con una opción ‘Input Mask Format’ donde puedes añadir el formato que los usuarios deben seguir para enviar los datos del campo del formulario.
Puede añadir un formato específico para números de teléfono o campos de texto individuales.
Si no quieres validar los campos de tu formulario, entonces te recomendamos WPForms porque es el mejor plugin para formularios de contacto que viene con protección completa contra spam y soporte para Google reCAPTCHA.
También permite añadir menús desplegables y casillas de verificación a los formularios, lo que dificulta a los piratas informáticos la adición de 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 las funciones de los usuarios
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 tienes un blog multiautor, entonces tendrás varios autores junto con suscriptores y administradores. En ese caso, puedes mejorar la seguridad del sitio limitando el acceso total de administración sólo al administrador.
Puede restringir el resto de 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 evitará ataques de inyección SQL.
Puedes hacerlo con el plugin gratuito Remove Dashboard Access. Tras la activación, simplemente visita la página Configuración ” Acceso al panel de control, donde puedes decidir qué roles de usuario tienen acceso al panel de control.
Si desea limitar a los usuarios en función de sus capacidades, puede consultar nuestro tutorial sobre cómo añadir o eliminar capacidades de los roles de usuario en WordPress.
Del mismo modo, también puede limitar los autores a sus propios mensajes en su área de administración para mayor seguridad.
6. Crear mensajes de error de base de datos personalizados
A veces sus usuarios pueden encontrarse con un error de base de datos en su sitio web, lo que puede mostrar información importante sobre su 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 ello, tendrás que 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>
A continuación, conecte su sitio a un programa FTP y cargue el archivo que acaba de crear en el directorio /wp-content/ de su sitio.
Ahora, cuando los usuarios encuentren un error de base de datos en su sitio web, verán un mensaje de error informándoles del problema sin revelar ninguna información sensible.
Además, se mostrará el título “Error de base de datos” en la pestaña del navegador web.
Para más detalles, consulte nuestro tutorial sobre cómo añadir una página de error de base de datos personalizada en WordPress.
7. Eliminar funciones innecesarias de la base de datos
Para prevenir los ataques de inyección SQL, también debe tratar de eliminar toda la funcionalidad de la base de datos y los archivos que no necesita en su sitio web.
Por ejemplo, puede eliminar tablas innecesarias, basura o comentarios no aprobados que pueden hacer que su base de datos sea susceptible a los piratas informáticos.
Para eliminar funcionalidades innecesarias de la base de datos, recomendamos WP-Optimize. Es un plugin increíble que elimina tablas innecesarias, revisiones de entradas, borradores, comentarios basura, entradas eliminadas, pingbacks, metadatos de entradas 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.
Bonificación: Utilice los servicios WPBeginner Pro para crear un sitio seguro
Una vez que haya tomado todas las medidas preventivas contra los ataques de inyección SQL, también puede optar por WPBeginner Pro Services.
Podemos ayudarle a identificar y corregir cualquier otra vulnerabilidad de seguridad que desconozca. Además, si ya se ha enfrentado a un ataque de inyección SQL, nuestros expertos pueden ayudarle a contener los daños y recuperar sus sistemas.
También puede contratarnos para mejorar la optimización de la velocidad de su sitio, el diseño, el SEO o incluso reconstruir completamente su sitio WordPress existente, tanto si ha sido pirateado como si no.
Para más información, consulte todos nuestros servicios profesionales WPBeginner.
Esperamos que este artículo te haya ayudado a aprender cómo prevenir ataques de inyección SQL en WordPress. Quizá también te interese consultar nuestra guía para principiantes sobre cómo buscar actualizaciones de seguridad de WordPress o nuestra guía definitiva sobre seguridad en WordPress.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
¿Tiene alguna pregunta o sugerencia? Por favor, deje un comentario para iniciar la discusión.