绑定变量和存储过程

时间:2013-08-06 14:39:48

标签: stored-procedures

我的理解是参数化查询和存储过程都有助于防止sql注入。

参数化查询是否无法注入sql?

使用非常糟糕的存储过程进行参数化查询会导致无法注入sql吗?

是否有上述任何一个例子?感谢

1 个答案:

答案 0 :(得分:1)

是的,参数化查询和存储过程可以帮助阻止SQL注入。

但是说他们让它变得不可能有点延伸。在编写查询时,使用参数和考虑肯定会阻止注入。

但是_very bad_查询或存储过程仍然可以注入。

一个例子是在存储过程或查询中使用动态SQL查询:

CREATE STORED PROCEDURE [BadStoredProcedure]
   (@columnList varchar(MAX))
AS
BEGIN
   DECLARE @sqlCommand varchar(1000)       

   SET @sqlCommand = 'SELECT ' + @columnList + ' FROM Customers'

   EXEC (@sqlCommand)
END

猜猜如果将*; TRUNCATE TABLE Customers; SELECT *传递给@columnList

会发生什么