¿Inyección de SQL a través del nombre de la tabla?

0

¿Es posible realizar una inyección de SQL en una consulta donde el nombre de la tabla se pasa como un argumento? El usuario no ingresa el nombre de la tabla por sí mismo, pero puede inferirse a través de los ID de elemento. Estoy usando Microsoft SQL Server 2012 con Coldfusion 10, si eso ayuda.

Ejemplo:

  

SELECCIONA * DE [Base de datos]. [dbo]. [# tableName #]

¿Se podría usar el parámetro # tableName # para inyectar código malicioso?

Además, ¿podrían los nombres de los parámetros ser vulnerables a la inyección también?

Segundo ejemplo:

  

SELECCIONE * DE [Base de datos]. [dbo]. [# tableName #] DONDE [# paramName #] = '# paramValue #'

El segundo ejemplo supone el uso de cfqueryparam de Coldfusion para configurar el # paramValue #, por lo que la pregunta está más orientada hacia el uso de [# paramName #].

    
pregunta rm -rf slash 07.10.2015 - 14:53
fuente

1 respuesta

3

Sí . Supongo que está construyendo su consulta con concatenación de cadenas.

Tomemos

SELECT * FROM [Database].[dbo].[#tableName#]

Si reemplaza # tableName # por employee]; DELETE FROM [Database].[dbo].[employee , obtiene 2 consultas

SELECT * FROM [Database].[dbo].[employee];
DELETE FROM [Database].[dbo].[employee];

Solo hay una forma de corregir la inyección SQL: usar consultas parametrizadas

    
respondido por el Gudradain 07.10.2015 - 15:04
fuente

Lea otras preguntas en las etiquetas