Cómo prevenir un ataque de inyección de SQL

17/02/2025

Cómo prevenir un ataque de inyección de SQL
Diseñado por Freepik

Por Graciela Martínez y Guillermo PereyraLACNIC CSIRT

El ataque de inyección de SQL es una técnica de hackeo web muy utilizada.  Conocido como SQLi, es un ataque donde se “inyecta” una o varias sentencias SQL válidas a una consulta de una aplicación a una base de datos. 

Structured Query Language, conocido por sus siglas en inglés como SQL, es un lenguaje de comando y control para el manejo de base de datos relacionales.

¿Cómo se logra un ataque de inyección SQL?

El ataque  se logra cuando una aplicación acepta datos de fuentes no confiables- que fueron alterados para ser interpretados como código- y además no realiza una correcta validación de los mismos antes de utilizarlos para realizar una consulta dinámica a la base de datos.

Vectores de ataque

A la hora de diseñar una aplicación es importante tener en cuenta que cualquier entrada de datos por parte de un usuario es susceptible a ser modificada de forma arbitraria.

Habitualmente, los ataques sobre aplicaciones web son llevados a cabo mediante la modificación de parámetros en la URL, utilizando el método HTTP GET o, como veremos en los ejemplos, modificando cualquier tipo de entrada de datos con el método HTTP POST.  Según cómo esté diseñada la aplicación web, es posible explotar esta vulnerabilidad  ya sea modificando cabeceras HTTP como User Agent, cookies, referrer o cabeceras propias del sistema.

Se deben considerar otros posibles  vectores de ataque tales como lector de barras, lector QR, o cámara de vídeo que reconozca texto.

(Acceso libre, no requiere suscripción)

Es importante tener en cuenta que un atacante puede ser externo o pertenecer a la organización afectada.

¿Cuáles son las posibles consecuencias de un ataque de inyección SQL?

Cualquier acción no deseada que se ejecute sobre una base de datos como consecuencia de un ataque por SQLi puede afectar uno o varios pilares de seguridad de la información.

Un ataque exitoso puede permitir al atacante concretar diversas acciones que afecten la confidencialidad, integridad y/o disponibilidad de la información.

Las opiniones expresadas por los autores de este blog son propias y no necesariamente reflejan las opiniones de LACNIC.

Subscribe
Notify of

1 Comentarios
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Mejores Prácticas de Seguridad en PHP
1 year ago

[…] web.14 Usar PDO (PHP Data Objects) para conectarse a la base de datos es crucial para evitarla.15 PDO emplea sentencias ya preparadas para que los datos del usuario no se confundan con el lenguaje […]