我的理解是参数化查询和存储过程都有助于防止sql注入。
参数化查询是否无法注入sql?
使用非常糟糕的存储过程进行参数化查询会导致无法注入sql吗?
是否有上述任何一个例子?感谢
答案 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