Seguridad · Avanzado

Inyecciones: separar una instrucción de los datos

En una línea: Cada lugar donde una cadena del usuario se ensambla en un comando es una brecha; la solución son parámetros, no filtrado.

El único principio

El motor debe recibir el comando y los datos por separado. Consultas parametrizadas, comandos del sistema con un array de argumentos, y motores de plantillas que marcan el contenido inseguro. Filtrar cadenas es una carrera que siempre se pierde.

Dónde aparece

Bases de datos, comandos del sistema operativo, consultas a bibliotecas, llamadas a motores de búsqueda, y también en direcciones construidas dinámicamente. Y sí: también en indicaciones a un modelo de lenguaje, donde el contenido externo puede interpretarse como una instrucción.

Defensa en profundidad

Permisos mínimos para el usuario de la base de datos, para que incluso si algo pasó, el daño esté limitado. Y validación de la entrada contra un esquema: no como sustituto de la separación, sino como capa adicional que bloquea la entrada absurda desde el principio.

En profundidad

Ejecuta pruebas automáticas que alimenten entrada inusual en cada campo: caracteres especiales, longitud extrema, distintas codificaciones, y comprueba que la respuesta es un error ordenado y no un comportamiento anómalo. Eso atrapa también fallos ordinarios, no solo vulnerabilidades.