需要以下SQL注入問題的幫助:帶有參數化過程的SQL注入
以下是參數化存儲過程的一個版本。排除如何從應用程序調用它,是否有阻止@ v_string被視爲動態SQL?
我認爲這相當水密 - 沒有執行或連接的SQL,但仍然插入分號允許返回其他數據。
我知道有多個層面來考慮這個問題,但我想知道是否有一些簡單的解決方案,我錯過了這裏,因爲大多數注入修復涉及動態查詢。
create table dbo.Employee (EmpID int,EmpName varchar(60))
declare
@v_id int,
@v_string varchar(60)
begin
set @v_string='test'''; waitfor delay '0:0:5' --
if @v_id is null
begin
set @v_id = (select EmpID
from Abc.Employee
where [email protected]_string);
end
print @v_id
end
如果SP使用查詢中由用戶直接提供的參數,並且它們直接連接到select語句中(而不是參數)。 –
「插入分號允許返回其他數據。」我看不出會發生什麼。你能告訴我們關於你在哪裏插入這個分號的細節,以及你如何知道額外的數據因爲它而被返回? –
用select * from sys.databases替換waitfor延遲 –