Locura primaveral: Consigue 3 meses de hosting de prueba gratis y hasta un 90% de descuento en dominios. **

Compra ahora
.com
$ 5.99 $ 26.99 /1er año
.one
$ 1.99 $ 16.99 /1er año

Iniciar sesión

Panel de Control Webmail Editor web Tienda online File Manager WordPress

¿Qué es SQL injection?

Lee estos ejemplos de inyección SQL para entender cómo funcionan los ataques SQL injection

vector

En breve

Glossary

SQL injection es un tipo de ciberataque en el que un hacker usa código malicioso para manipular la base de datos de un sitio web y acceder a información confidencial.

SQL injection (también conocido como inyección SQL en español), es una vulnerabilidad de seguridad en la web que la expone a ataques. Un ataque SQL injecton permite a un hacker visualizar datos que no debería conocer o a los que no debería tener acceso. Los datos son un tema delicado, ya que pueden pertenecer a un usuario o pueden ser datos a los que puede acceder la aplicación. 

¿Qué hace un hacker con estos datos? Por lo general, un hacker elimina los datos de la aplicación web o los modifica por completo para causar problemas y cambiar el comportamiento de la aplicación. 

En algunos casos, el hacker ejecuta el ataque SQL injection en el servidor de la aplicación web para poner en peligro su funcionamiento. 

¿Cuáles son las consecuencias de un ataque SQL injection?

Muchas empresas se ven perjudicadas por los ataques SQL injection, incluso las grandes empresas. Si tu empresa es víctima de un ataque SQL injection, no hace falta decir que este tendrá un impacto negativo en tu negocio. Entre otras cosas, las consecuencias de un ataque SQL injection está la pérdida de información privada de los usuarios, y esto es muy perjudicial para la reputación de tu empresa. Sin mencionar que perder este tipo de información es ilegal, debido a la ley de protección de datos. Por tanto, es esencial tomar medidas preventivas para evitar estos ataques.

SQL injection: ejemplo

Un ejemplo de inyección SQL puede ser algo parecido a esto: supongamos que tienes una tienda online, con una categoría dedicada a la venta de zapatillas de deporte. Un usuario está interesado en comprar zapatillas, así que visita esa categoría en tu sitio web. Cuando el usuario hace clic en la categoría, su navegador le solicitará lo siguiente:

https://fake-website.com/products?catgory=Sneakers.

Tu aplicación web hará una consulta SQL para obtener los detalles de la información relevante sobre esa categoría de la base de datos. 

Lo más probable es que la consulta SQL se lea de la siguiente manera:

Select * FROM products WHERE category = ‘Sneakers’ AND released = 1

En este momento, la consulta SQL está pidiendo a la base de datos que devuelva los detalles de la categoría de productos que tiene, concretamente, la categoría de zapatillas. 

Released = 1 es una restricción. Se ha insertado el número 1 para ocultar los productos que aún no se han lanzado, como por ejemplo, algunas variaciones de zapatillas que quieres vender en el futuro. El 1 se asegura de que no estén disponibles para el público. 

Es posible que tu aplicación web no tenga ninguna forma de protegerse de un ataque SQL injection. Así que un hacker puede, desafortunadamente, atacar de una manera parecida a esta:

https://fake-website.com/products?catgory=Sneakers’–

Lo que daría lugar a una consulta SQL similar a esta: 

Select * FROM products WHERE category = ‘Sneakers’–‘ AND released = 1

La secuencia de dos guiones es un indicador de comentario que indica que la consulta es un comentario. Si el sistema cree que la consulta es un comentario, no puede saber que se trata de un ataque. El doble guión elimina el resto de la consulta (AND released = 1) y, como consecuencia, publicará información sobre todos los productos de su categoría, incluso aquellos que no han sido publicados aún.

Otro objetivo que puede tener un hacker al enviar un ataque de inyección SQL es ver todos los productos que vendes en tu sitio web: cada artículo de cada una de todas las diferentes categorías que tienes.

En este caso, el ataque podría ocurrir así:

https://fake-website.com/products?catgory=Sneakers’+OR+1=1–

Lo que resultaría en una consulta SQL similar a esta: 

Select * FROM products WHERE category = ‘Sneakers’ OR 1=1–’ AND released = 1

Enviar esta consulta devolverá información sobre todos los artículos de tu sitio web.

Hay muchos otros tipos de inyección SQL. Vamos a hablar brevemente de ellas. 

  • Inyección SQL basada en Boolean

El hacker envía una consulta SQL para devolver un resultado de la base de datos rápidamente. Utilizando este método, el atacante puede determinar si el resultado devuelto es verdadero o falso. 

  • Inyección SQL Ciega de Tiempo

El hacker envía una consulta para hacer esperar a la base de datos, creando un retraso. Con este método, el hacker sabrá si la consulta que ha enviado es verdadera o falsa en función del tiempo que tarde la base de datos en responder.

  • Inyección SQL Fuera de Banda

El hacker puede llevar a cabo un ataque fuera de banda si el servidor que utiliza la base de datos tiene ciertas características necesarias para ello. El hacker retira los datos a través del canal fuera de banda y los pone en otro lugar. Este tipo de ataque depende del servidor para crear una petición DNS y/o HTTP y transferir, así, los datos privados de los usuarios al hacker. 

Ataques SQL injection

Los ataques SQL injection más comunes se producen en la cláusula “where” de una sentencia SELECT. Sin embargo, también pueden ocurrir dentro de otros tipos de consulta, como en la sentencia UPDATE, la sentencia INSERT, la sentencia SELECT y en la cláusula ORDER BY. 

¿Cómo evitar SQL injection?

¡Puedes tomar medidas hoy mismo! La mayoría de las vulnerabilidades de inyección SQL se pueden encontrar rápidamente. 

  • Escáner

Utiliza el escáner de vulnerabilidad web de Burp Suites. Puedes usar este escáner estableciendo pruebas contra cada punto de entrada de la aplicación.

Puedes buscar errores, diferencias sistemáticas y comprobar las respuestas que recibes por parte de la aplicación. 

  • Validación de entrada y WAF

Escribe un código que pueda identificar a los usuarios ilegítimos. Sin embargo, cuando se utiliza solo, este no es un método infalible. Puede generar muchos falsos positivos. La implementación de este método junto con el uso de un firewall de aplicaciones web (WAF) puede ser efectivo. El WAF filtrará la inyección SQL y otras amenazas online. 

Cuando el WAF detecta un posible usuario ilegítimo, verificará los datos de la IP antes de bloquear la solicitud. Así, se bloquearán los datos de las IPs que tengan mala fama.

¡Mantente a salvo!

Crea tu sitio web en un hosting ultrarrápido

Haz que tu sueño sea un éxito. Aloja tu sitio en servidores rápidos, seguros y fiables.

Empieza
  • Servidores SSD de alto rendimiento
  • Panel de control fácil de usar
  • Creador de páginas web gratuito
  • Certificado SSL gratuito
  • Copia de seguridad diaria
  • Soporte 24/7