Cómo proteger su sitio web de WordPress contra inyecciones de SQL
Publicado: 2022-03-09WordPress es una de las plataformas de creación de sitios web más utilizadas debido a su amplia gama de aplicaciones potenciales. Puede crear una tienda en línea, alojar un blog sobre su pasatiempo favorito, crear una comunidad a través de foros o representar a una gran corporación.
Pero sin importar cómo lo use, una responsabilidad principal es mantener su sitio a salvo de los piratas informáticos. Por eso es importante comprender cómo prevenir los ataques de inyección de lenguaje de consulta estructurado (SQL).
La buena noticia es que hay muchos pasos que puede seguir para proteger su sitio de WordPress de este código malicioso. Aprender a detectar, eliminar y prevenir las inyecciones de SQL puede ayudarlo a proteger de manera efectiva sus datos valiosos y hacerlo menos susceptible a los ataques.
¿Qué es una inyección SQL y cómo funciona?
Para comprender cómo funcionan las inyecciones, es útil aprender primero qué es SQL. Este es un lenguaje común utilizado en el desarrollo de bases de datos.
Su sitio web lo utiliza para recuperar información crítica de su base de datos y generar contenido dinámico. Algunas de las bases de datos SQL incluyen MySQL (sitios de WordPress), MongoDB y SQL Server.
Su sitio web de WordPress utiliza una base de datos para administrar los datos y el contenido esenciales de su sitio, como sus páginas, publicaciones y comentarios. Ordena esta información en tablas.

Su base de datos es donde se almacenan sus datos más sensibles. Por lo tanto, cualquier ataque que lo exponga puede tener graves consecuencias.
La inyección SQL (SQLI) es un tipo de método de piratería que utilizan los ciberdelincuentes para infiltrarse y manipular las bases de datos de WordPress. Esencialmente, los piratas informáticos pueden explotar las lagunas en la codificación de back-end de los sitios web e insertar código malicioso en los campos de entrada de datos.
Este código permite a los actores infames ejecutar comandos SQL a los servidores de la base de datos a través de solicitudes web utilizando cadenas de consulta, cookies y elementos <input>. Esto significa que pueden crear, acceder, cambiar y eliminar datos de su base de datos de WordPress.
Hay muchos puntos de entrada diferentes donde esto puede ocurrir. Los campos de entrada más utilizados incluyen formularios de registro, inicio de sesión y contacto, así como barras de búsqueda y carritos de compras.
Supongamos que tiene un formulario en su sitio web donde los visitantes pueden ingresar su número de teléfono. Los ciberdelincuentes pueden usar ese campo de entrada para insertar un código malicioso que solicite el nombre de usuario y la contraseña del administrador.
Tipos de inyecciones de SQL
Hay varios tipos diferentes de inyecciones de SQL. Una categoría es lo que se conoce como "en banda". Este es el tipo de inyección más simple e incluye ataques basados en errores.
Con esta técnica, los piratas utilizan la inyección para obtener detalles sobre la estructura de la base de datos y los nombres de las tablas. Por ejemplo, un mensaje de error puede proporcionar el nombre de la tabla incluida en una consulta. Luego, el hacker puede usar esta información para crear nuevos ataques.
Otro tipo es lo que se conoce como "inyección SQL ciega". Aquí es cuando el atacante envía una variedad de consultas a la base de datos para averiguar cómo el sitio analiza las respuestas. Hacerlo puede ayudarlos a sondear las respuestas a las consultas SQL para identificar posibles vulnerabilidades y solicitar a la base de datos que transmita datos a una fuente externa.
¿Qué tan comunes son las inyecciones de SQL?
Desafortunadamente, los ataques de inyección SQL son frecuentes. De hecho, según un informe publicado por Akamai, entre 2017 y 2019, alrededor de dos tercios de los ataques a aplicaciones de software se atribuyeron a inyecciones de SQL.
Un Informe de estadísticas de vulnerabilidad de 2020 separado también reveló que las inyecciones de SQL representaron el 42 por ciento de las vulnerabilidades críticas más comunes.
Las inyecciones SQL son una posibilidad para cualquier sitio web que use bases de datos SQL, como los sitios basados en WordPress, especialmente aquellos que tienen campos de entrada como formularios de contacto y cuadros de búsqueda.
Por qué las inyecciones de SQL son peligrosas
Las inyecciones de SQL son peligrosas por varias razones. Primero, brindan a los piratas informáticos la oportunidad de robar información confidencial, como sus credenciales de inicio de sesión o datos de clientes.
Los piratas informáticos no solo pueden usar la inyección SQL para obtener y robar datos, sino que también pueden usarlos para eliminar esos datos. Esto significa que corre el riesgo de perder información privada y esencial utilizada para ejecutar su sitio web.
Además, existe el riesgo de daño a la reputación y pérdida de ingresos. Una violación de datos puede dañar su negocio y podría perder la confianza de sus clientes o seguidores.
Además, estos ataques pueden hacer que Google bloquee su sitio. Si termina en esta lista, muchos visitantes potenciales recibirán una advertencia de que su sitio no es seguro. La mayoría de estas personas se darán la vuelta y es posible que nunca regresen. Además, Google también degradará significativamente su clasificación de búsqueda, lo que podría conducir a una pérdida importante a largo plazo de tráfico orgánico de la que es difícil recuperarse.
Cómo detectar inyecciones de SQL
Hay algunas señales que pueden indicar que ha sido víctima de un ataque de inyección SQL. Una es que de repente recibe una afluencia de correos electrónicos a través del formulario de contacto de su sitio. Otro indicador es si recibe ventanas emergentes, anuncios y mensajes de error extraños, especialmente si lo están redirigiendo a sitios web aparentemente incompletos.
Desafortunadamente, las señales de un ataque de inyección SQL no siempre son tan obvias. Como mencionamos anteriormente, a veces los piratas informáticos quieren usar inyecciones para robar información en lugar de dañar su sitio web. Por lo tanto, pueden utilizar métodos más sutiles que dificultan la detección.
Herramientas de detección y escaneo de inyección SQL
La única forma de saber con certeza si ha sido un objetivo es realizar un escaneo en su sitio web. Afortunadamente, existe una variedad de herramientas en línea que pueden ayudarlo a detectar inyecciones de SQL en su sitio de WordPress.
Por ejemplo, puede usar Pentest Tools para realizar dos escaneos gratuitos de su sitio web.

Hay dos opciones: un escaneo ligero o un escaneo completo. Para este último, deberá actualizar a un plan pago. Simplemente ingrese la URL de su sitio web y haga clic en el botón Escanear destino . Si hay vulnerabilidades presentes, el análisis las revelará.
Cómo eliminar las inyecciones de SQL de su sitio web de WordPress
1. Restaurar una copia de seguridad
Su mejor opción para eliminar las inyecciones de SQL es restaurar una copia de seguridad de su sitio. Si está utilizando Jetpack Backup, todo lo que tiene que hacer es usar el registro de actividad para determinar cuándo ocurrió el ataque y luego restaurar una copia de seguridad anterior a ese punto. Su sitio volverá al estado en el que estaba antes del ataque.
Sin embargo, es importante tener en cuenta que, en algunos casos, las inyecciones de SQL se realizan poco a poco, con el tiempo. Es posible que deba retroceder bastante para encontrar una copia de seguridad limpia, lo que podría provocar la pérdida de datos.
Y aunque la restauración de una copia de seguridad puede hacer que su sitio vuelva a funcionar, si se robaron datos confidenciales, aún tendrá que lidiar con las ramificaciones de la violación.
2. Utiliza un servicio de limpieza de sitios web
Otra opción es utilizar un servicio de limpieza de sitios web de terceros para escanear su sitio y corregir las inyecciones de SQL. Sucuri es una opción: simplemente envíe su sitio web a su equipo y deje que ellos se encarguen de todo lo demás. Dado que son expertos, pueden eliminar el malware de su base de datos de manera más efectiva que el desarrollador promedio.
3. Retire las inyecciones usted mismo
Finalmente, si tiene experiencia en la administración y el trabajo con MySQL, puede limpiar manualmente su base de datos. Tenga en cuenta, sin embargo, que esta es una técnica avanzada y si no sabe lo que está haciendo, cualquier cambio puede generar problemas.
Cómo prevenir inyecciones de SQL en el futuro
No hay forma de garantizar que su sitio sea 100 % seguro, pero hay medidas que puede tomar para minimizar el riesgo de ataque. Echemos un vistazo a los ocho métodos que puede usar para evitar las inyecciones de SQL en WordPress.
1. Valide (o desinfecte) sus datos
La clave para prevenir las inyecciones de SQL en WordPress es proteger cualquier campo de entrada que pueda usarse para ingresar datos o contenido en su sitio web. Esto incluye secciones de comentarios y formularios. Por lo tanto, es importante validar y desinfectar los datos ingresados en estos campos al enviarlos.
La validación y desinfección de entrada le permiten verificar los comandos enviados por los usuarios. La higienización incluso le permite cambiar los comandos. Es una forma efectiva de asegurarse de que estos comandos no contengan código malicioso o cadenas de caracteres.
La validación asegura que la información ingresada en un formulario coincida con el formato solicitado antes de procesar la solicitud. Por ejemplo, si tuviera un campo de entrada para una dirección de correo electrónico, los datos no se validarían si el símbolo '@' no estuviera presente.
La forma más fácil de crear una validación para los datos de su formulario es estableciendo reglas para sus formularios. El proceso para hacerlo dependerá del complemento específico que esté utilizando. Por ejemplo, si usa la versión premium de Formidable Forms, puede agregar su propio formato de máscara de entrada personalizado para campos de texto.


Agregar requisitos de formato de entrada puede limitar el riesgo de inyección SQL. La desinfección puede ayudar a garantizar que los datos ingresados sean seguros para procesar una vez que hayan sido validados.
La mayoría de los complementos de formulario de WordPress desinfectan automáticamente los datos del formulario. Sin embargo, puede agregar medidas de seguridad adicionales. En lugar de respuestas abiertas, considere usar menús desplegables y opciones de opción múltiple. También puede restringir el uso de caracteres especiales.
2. Instala una herramienta de seguridad de WordPress
El complemento de seguridad de WordPress de Jetpack puede monitorear su sitio en busca de vulnerabilidades que podrían conducir a inyecciones de SQL. Esto le da la oportunidad de arreglarlos antes de que alguien se aproveche.
Con el monitoreo del tiempo de inactividad, sabrá en el momento en que su sitio se cae para que pueda reaccionar rápidamente. Y con las copias de seguridad en tiempo real, puede restaurar su sitio por completo.
También proporciona herramientas de seguridad como:
- Escaneo de malware para sus archivos de WordPress, junto con soluciones de un solo clic para la mayoría de los problemas
- Soluciones anti-spam para proteger sus comentarios y formularios de contacto
- Protección contra ataques de fuerza bruta para mantener alejados a los piratas informáticos
3. Mantén tu sitio web y base de datos actualizados en todo momento
El uso de software y herramientas desactualizados puede introducir una amplia gama de vulnerabilidades en su sitio para que los piratas informáticos las exploten. Por eso es importante asegurarse de mantener actualizado su sitio web de WordPress en todo momento.
Actualmente, casi la mitad de las instalaciones de WordPress no utilizan la versión más actualizada. Por lo tanto, es posible que desee considerar habilitar las actualizaciones automáticas para asegurarse de que siempre esté ejecutando la versión más reciente de WordPress.
Para hacer esto para las actualizaciones de Core, puede navegar a la archivo wp-config.php en el directorio raíz de su sitio web. A continuación, copie y pegue el siguiente fragmento de código en el archivo:
define( 'WP_AUTO_UPDATE_CORE', true );
Puede habilitar las actualizaciones automáticas para sus complementos navegando a Complementos pantalla desde su panel de administración. Luego, haga clic en Habilite las actualizaciones automáticas en la columna de la derecha.

Para minimizar las vulnerabilidades, recomendamos eliminar cualquier complemento o tema no utilizado de su sitio. También es aconsejable actualizar su versión de SQL. Si está utilizando cPanel para su panel de control de alojamiento, puede actualizar su software MySQL desde su tablero. Dependiendo de su proveedor de alojamiento, es posible que pueda habilitar las actualizaciones automáticas de SQL.
4. Cambia el prefijo de tu base de datos de WordPress
De forma predeterminada, cada vez que instala WordPress, el CMS usa "wp_" como prefijo de su base de datos. Recomendamos encarecidamente cambiar esto a otra cosa, ya que los piratas informáticos pueden usarlo para explotar vulnerabilidades a través de la inyección de SQL.
Antes de comenzar, debe hacer una copia de seguridad de su base de datos. De esta manera, si algo sale mal, tienes una versión segura para restaurar.
Luego, conéctese a su sitio a través del cliente FTP o el Administrador de archivos de su host y busque el archivo wp-config.php , que se encuentra en el directorio raíz de su sitio. En el archivo, busque la línea table_prefix, luego cambie "wp_" a otra cosa:
$table_prefix = 'wp_a12345_';
Cuando haya terminado, guarde el archivo. ¡Eso es todo!
5. Usa un cortafuegos
Otra estrategia que puede usar para protegerse contra la inyección de SQL es instalar un firewall. Este es un sistema de seguridad de red que lo ayuda a monitorear y controlar los datos que ingresan a su sitio de WordPress. Esto puede detectar y filtrar códigos maliciosos, incluidos los de ataques de inyección SQL.
Existe una amplia variedad de herramientas de cortafuegos de WordPress que puede utilizar. Algunas opciones populares incluyen Wordfence y Sucuri. Estas herramientas no evitarán que los atacantes envíen comandos, pero pueden ayudarlos a bloquear el acceso real a su sitio.
6. Oculta la versión de WordPress que estás usando
Tener la versión de su sitio de WordPress disponible públicamente puede facilitar que los atacantes exploten las vulnerabilidades conocidas, ya que cada versión viene con su propio conjunto. Por lo tanto, para proteger su sitio, le recomendamos que oculte la versión que está utilizando.
Hacerlo es rápido y fácil. Para comenzar, simplemente copie el siguiente fragmento de código:
remove_action('wp_head', 'wp_generator');
A continuación, navegue hasta el archivo functions.php de su tema actual de WordPress. Puede hacer esto directamente desde el Editor de temas en WordPress, usando un cliente FTP o usando el Administrador de archivos de su host. Pegue el código dentro del archivo y luego guarde los cambios.
7. Elimine la funcionalidad innecesaria de la base de datos
Cuanta más funcionalidad tenga su base de datos de WordPress, más susceptible será de ser atacada. Para minimizar su riesgo de inyección SQL, considere normalizar su base de datos y eliminar cualquier función y contenido innecesario.
En pocas palabras, la normalización de la base de datos se refiere al proceso de organización de sus datos. El propósito de hacer esto es eliminar cualquier dato redundante en su base de datos y asegurarse de que todas las dependencias de datos tengan sentido. Puede hacer esto poniendo su base de datos en Primera Forma Normal.
Si desea una opción más amigable para principiantes para limpiar su base de datos de WordPress, puede usar un complemento. Hay un puñado de opciones sólidas para elegir, como WP-Optimize.
Este complemento freemium lo ayuda a limpiar su base de datos sin necesidad de ejecutar manualmente comandos SQL a través de phpMyAdmin. En cambio, puede usarlo para optimizar su base de datos directamente desde su tablero de WordPress.

Elimina toda la información innecesaria de su base de datos, incluida la basura y los comentarios no aprobados. WP-Optimize también le permite desfragmentar las tablas de su base de datos MySQL con un solo clic.
8. Limite el acceso y los permisos de los usuarios
Puede asignar varios roles para los usuarios de WordPress en su sitio web. Estos pueden variar desde un suscriptor hasta un administrador. Con cada rol, puede controlar cuánto acceso se otorga y qué "capacidades" se les otorgan.
Para ayudar a fortalecer su seguridad, es mejor limitar la cantidad de roles con acceso completo de administrador y permisos de usuario. Cuantas menos personas puedan cambiar e ingresar datos, es menos probable que enfrente un ataque de inyección SQL.
Para personalizar los roles y permisos de los usuarios en WordPress, puede navegar a Usuarios → Todos los usuarios .

Luego, haga clic en el enlace Editar debajo del nombre del usuario para el que desea limitar el acceso y los permisos. En la siguiente pantalla, puede cambiar su rol usando el menú desplegable Rol .
Al administrar sus roles de usuario de WordPress, también recomendamos eliminar cualquier cuenta que ya no esté en uso. Eliminar los roles que están desactualizados puede minimizar sus vulnerabilidades.
9. Evite el uso de complementos anulados
Los complementos anulados son herramientas premium que han sido robadas y se ofrecen de forma gratuita. Si bien pueden parecer una gran oferta, no solo está perjudicando al desarrollador original al no pagarle por su trabajo, sino que también se está arriesgando a que lo hackeen.
Los complementos anulados a menudo están llenos de código malicioso y puertas traseras que brindan a los piratas informáticos una puerta de entrada fácil a su sitio. Evítelos a toda costa y, en su lugar, use complementos de fuentes confiables.
Proteja su sitio de WordPress de las inyecciones de SQL
Para proteger su sitio web y sus datos de la amenaza de los ciberdelincuentes, es importante conocer algunos de los métodos más comunes que se utilizan para acceder a su sitio. Cuando se trata de fortalecer la seguridad de su base de datos, esto significa estar bien versado en las inyecciones de SQL.
Como discutimos en esta publicación, una inyección SQL puede tener efectos dañinos en su sitio de WordPress, desde la exposición de datos confidenciales hasta la pérdida de contenido e ingresos. Afortunadamente, hay algunos pasos que puede seguir para detectar, eliminar y prevenir ataques de inyección.
Ningún sitio web es completamente seguro, pero siguiendo los consejos y técnicas anteriores, puede reducir significativamente sus posibilidades de ser víctima de inyecciones SQL.