2013-08-06 57 views
0

我的理解是參數化查詢和存儲過程都有助於防止sql注入。綁定變量和存儲過程

參數化查詢是否無法注入sql?

使用非常糟糕的存儲過程進行參數化查詢會導致無法注入sql嗎?

是否存在以上兩種情況的示例?謝謝

回答

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

+0

「發生了什麼,但稱他們使它不可能是一點一個延伸,注入肯定會受到參數的阻礙,但其他類型的攻擊也許是可能的。「還有哪些類型的攻擊是可能的? – user2656984

+0

@ user2656984 - 從我的回答中引用文字根本沒有幫助,但我沒有改變。希望這會回答你的問題。 –

+0

我更擔心參數化查詢。我知道存儲過程中的動態查詢可以按照您的示例進行注入:) 我對參數化查詢的工作方式的理解是在一系列準備和執行過程中:第一個序列是發送到服務器的「準備查詢」第二步是使用參數發送到服務器的「executequery」。 「_vary bad_」查詢是什麼意思,任何例子? – user2656984