¿Implementación de procedimientos almacenados de VB.NET?

4

Mientras revisaba el código de una aplicación vb.net, encontré la siguiente implementación de procedimientos almacenados utilizando ExecuteDataSet

 Result = DBInstance.ExecuteDataSet(Name, paramArrayList.ToArray)

Aquí, 'Nombre' es el nombre del procedimiento almacenado y los parámetros de entrada del cliente se pasan en una matriz. 'DBInstance' se obtiene de DatabaseProviderFactory que proviene de Microsoft.Practices.EnterpriseLibrary.Data . El procedimiento almacenado utiliza los parámetros de la consulta como se muestra a continuación:

CREATE procedure sp_name
(
    @para1      VARCHAR(25),
    @para2      VARCHAR(25)

)       
as  
SELECT x,y FROM mytable
WHERE p = @para1 AND q = @para2 

go

Los parámetros se pasan a la función ExecuteDataSet () sin validar .

¿El método ExecuteDataSet realiza algún tipo de validación en los datos que se le pasan para evitar SQLi? No puedo encontrar ningún ejemplo en Internet que utilice el mismo método para implementar procedimientos almacenados.

He echado un vistazo a la seguro implementación de procedimientos almacenados en VB que claramente utiliza consulta parametrizada. Mi pregunta es sobre el método ExecuteDataSet que es seguro / inseguro para pasar parámetros a procedimientos almacenados.

    
pregunta Shurmajee 16.04.2014 - 08:04
fuente

1 respuesta

0

No, no se necesita una validación adicional para evitar la inyección de SQL. Este patrón es seguro. Cuando se trata de un procedimiento almacenado que simplemente usa los valores de los parámetros como valores predicados en la declaración SQL ( WHERE p = @p ), SQL Server sabe que el valor del parámetro es datos, no una declaración ejecutable. No es posible ejecutar el contenido del parámetro.

La única vez que realmente necesita preocuparse por el valor del parámetro que está pasando a un procedimiento almacenado es cuando lo está ejecutando explícitamente dentro del proceso, utilizando EXEC, EXECUTE o sp_executesql.

    
respondido por el Xander 07.05.2014 - 18:19
fuente

Lea otras preguntas en las etiquetas