大多数 SQL 注入的答案和示例都显示某种形式的动态 SQL 或将参数解释为 SQL。
我还没有找到“正确”方式的例子。Microsoft 和 Oracle 的文档仅显示了不应做什么的示例。
因此,我想我应该询问这个存储过程示例是否受到 SQL 注入攻击的保护。
CREATE PROCEDURE test
@username = varchar(30)
@password = varchar(30)
AS
BEGIN
SELECT *
FROM credentials
WHERE username = @username
AND password = @password;
END
GO
Run Code Online (Sandbox Code Playgroud)
这个特定的过程是否容易受到 SQL 注入的影响?我创建了该过程并通过各种尝试注入 SQL 来执行它,例如EXEC test @password = '0; drop table credentials;'
,但无法这样做。我想我可能没有正确地进行攻击。