Logo de Dallonses

SQL injection

¿Qué es la SQL injection?

La SQL injection es un ataque en el que una entrada no confiable altera la consulta de base de datos que ejecuta un servidor. Cuando una aplicación construye una consulta pegando la entrada del usuario directamente dentro de una cadena, un atacante puede escribir una entrada que cambia lo que hace la consulta. En lugar de buscar un nombre de usuario, la consulta podría devolver todas las filas, saltarse la comprobación de contraseña o eliminar una tabla. El ataque golpea la base de datos y los datos que hay detrás, que es lo que lo hace peligroso.

Funciona porque la aplicación no puede distinguir entre dato y comando una vez se mezclan en una sola cadena. Introduce un valor como ' OR '1'='1 en un formulario de login construido así y la condición se vuelve siempre verdadera, dejando entrar a alguien sin contraseña. Esto difiere del XSS, que apunta al navegador de otro usuario. La SQL injection apunta al servidor y a su almacén. Ambos vienen del mismo fallo, confiar en la entrada, pero atacan capas distintas.

La solución son las consultas parametrizadas, también llamadas sentencias preparadas. La estructura de la consulta se define aparte de los valores, así la entrada del usuario nunca puede cambiar el comando. Los ORM y los query builders lo hacen por defecto, por eso son más seguros que las cadenas hechas a mano. Las cuentas de base de datos con privilegios mínimos y la validación de entrada añaden más capas, limitando el daño aunque algo se cuele.

SQL injection en Dallonses

Nunca construimos consultas concatenando la entrada del usuario. Las consultas parametrizadas son el valor por defecto en cada proyecto, y las cuentas de base de datos reciben solo los permisos que el trabajo necesita y nada más. Cuando revisamos un pull request, cualquier consulta cruda que maneje entrada es una alerta en la que nos paramos.

Esto vive dentro de nuestra práctica más amplia de estrategia y QA governance a través del desarrollo web y las aplicaciones web a medida. La seguridad es parte del aseguramiento de calidad de software, comprobada de forma continua en lugar de auditada una vez al final. Hemos construido sistemas que guardan datos sensibles de clientes y de negocio para marcas donde una filtración sería un fallo real, y esa responsabilidad moldea cómo escribimos la capa de datos desde el primer día.

¿Tienes una base de datos con datos que no te puedes permitir perder? Asegurémonos de que sigue bajo llave.

Hablemos de desarrollos seguros

Servicios relacionados


¿Listo para trabajar juntos?

Reservar una reunión
Aymón sosteniendo una revista Tools frente a su cara
Ari trabajando en una laptop al aire libre rodeado de plantas
Vista superior de un escritorio de madera con teclado, ratón y auriculares
Ilustración dibujada a mano de una mano chasqueando los dedos
Nico recostado contra un dispensador de agua junto a un extintor de incendios
Primer plano de una computadora abierta con placa de circuito y componentes en un escritorio de madera
Bernat y Andreu colaborando en un escritorio con monitores y una laptop
Ilustración dibujada a mano de una mano abierta saludando
Aymón sosteniendo una revista Tools frente a su cara
Ari trabajando en una laptop al aire libre rodeado de plantas
Vista superior de un escritorio de madera con teclado, ratón y auriculares
Ilustración dibujada a mano de una mano chasqueando los dedos
Nico recostado contra un dispensador de agua junto a un extintor de incendios
Primer plano de una computadora abierta con placa de circuito y componentes en un escritorio de madera
Bernat y Andreu colaborando en un escritorio con monitores y una laptop
Ilustración dibujada a mano de una mano abierta saludando