2013-08-06 54 views
0

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

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

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

是否存在以上两种情况的示例?谢谢

回答

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

+0

“发生了什么,但称他们使它不可能是一点一个延伸,注入肯定会受到参数的阻碍,但其他类型的攻击也许是可能的。“还有哪些类型的攻击是可能的? – user2656984

+0

@ user2656984 - 从我的回答中引用文字根本没有帮助,但我没有改变。希望这会回答你的问题。 –

+0

我更担心参数化查询。我知道存储过程中的动态查询可以按照您的示例进行注入:) 我对参数化查询的工作方式的理解是在一系列准备和执行过程中:第一个序列是发送到服务器的“准备查询”第二步是使用参数发送到服务器的“executequery”。 “_vary bad_”查询是什么意思,任何例子? – user2656984