0

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

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

带有非常糟糕的存储过程的参数化查询是否会导致无法注入 sql?

有上述任何一种的例子吗?谢谢

4

1 回答 1

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

于 2013-08-06T14:43:58.620 回答