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