該存儲過程是否被視爲動態SQL或參數化查詢?動態SQL vs參數化查詢
CREATE PROCEDURE [dbo].[my_dodgy_sp]
@varchar1 varchar(50),
@varchar2 varchar(50)
AS
BEGIN
...
EXEC [dbo].[my_really_special_sp] @varchar1 @varchar2;
END
在頂部的櫻桃額外的巧克力甜甜圈如果你能告訴我這是否是動態/參數化:
CREATE PROCEDURE [dbo].[my_super_dodgy_sp]
@varchar1 varchar(50),
@varchar2 varchar(50),
@stored_procedure_name sysname
AS
BEGIN
...
EXEC @stored_procedure_name @varchar1 @varchar2;
END
爲了讓超級傻瓜sp更少,你可以添加一些驗證來確保@spname是'合法的'。 – MatBailie 2012-01-07 01:45:00
這是我困惑的地方。由於超級dodgy只是使用參數,這可能是一個參數化查詢,在這種情況下,你不能注入SQL代碼。所以它根本就不狡猾,你不需要驗證。 – icc97 2012-01-07 01:52:07
你不能用'EXEC @sp @ param'注入代碼。您只能提供對不同SP的引用。這是微妙的不同。我不完全同意dknaack的回答,所以我加了我自己的。我希望它可以幫助:) – MatBailie 2012-01-07 02:02:26