Inyección SQL
La inyección SQL aparece cuando datos externos cambian la estructura de una consulta. La vinculación de parámetros protege los valores, no los permisos de acceso.
La inyección SQL consiste en introducir fragmentos de instrucciones SQL mediante datos que procesa una aplicación. Si esos valores se incorporan al texto de una consulta, pueden cambiar su significado. Los datos que se pueden leer o modificar dependen, entre otros factores, de los permisos de la cuenta de base de datos utilizada.
Separar el filtro de proyecto y la estructura de consulta
Un portal de incidencias ficticio busca registros asociados a una referencia de proyecto. Trata el valor del campo projectRef como un parámetro vinculado: la estructura de la consulta es fija y el valor se transmite por separado mediante la interfaz de base de datos. Debe seguir siendo un valor de búsqueda y no convertirse en sintaxis SQL.
Preparar una consulta después de haberla compuesto con entradas no establece por sí solo esa separación. Tampoco los datos guardados antes o los valores de otros sistemas deben convertirse sin control en texto SQL al construir una consulta posterior.
Vincular valores y fijar las decisiones de estructura
Un campo de ordenación como sortKey es otro caso. Los marcadores para valores de datos no sustituyen nombres arbitrarios de columnas ni direcciones de ordenación. Por ello, la aplicación asocia las selecciones conocidas con columnas y direcciones fijas definidas en el código. OWASP describe expresamente esta distinción entre vincular parámetros y permitir decisiones estructurales.
Vincular parámetros tampoco comprueba si la persona que ha iniciado sesión puede acceder al proyecto solicitado. Esa autorización sigue siendo responsabilidad de la aplicación. Una cuenta de base de datos limitada a los permisos necesarios puede reducir los posibles daños; no elimina la construcción insegura de consultas.
Fuentes
Términos relacionados
- Base de datosUna colección organizada de datos a los que el software puede acceder y que puede modificar.
- SQLUn lenguaje para definir, consultar y modificar datos; no es un único producto de base de datos.
- Mapeo objeto-relacionalConectar objetos del programa con datos de una base relacional.
- Minimización de datosLa minimización limita los datos personales a lo adecuado, pertinente y necesario para una finalidad definida.
- Política de conservación de datosUna política de conservación define la finalidad, el inicio, la duración y el fin del almacenamiento. Los trabajos de borrado y las copias requieren medidas técnicas.
- Cifrado de sobreEl cifrado de sobre separa la clave de datos de la que la protege. El archivo cifrado y su clave de datos envuelta deben gestionarse juntos.
Su proyecto con ASES
Descríbanos su proyecto. Le responderemos con una primera valoración.