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.