2015-03-31 46 views
0

大家好我目前在ASP.NET中使用查詢生成器來創建選擇,插入,更新查詢等等,我已經在我的App_Code文件夾中創建的一些數據集。我已經意識到你要在查詢中使用參數,你必須使用「?」像這樣查詢生成器是否阻止SQL注入?

SELECT * FROM users WHERE email = ? 

什麼,我想知道是,這實際上保護你的表從SQL注入或做你需要做更多的代碼,以保護查詢?

回答

2

參數化查詢接受參數並將它們輸入爲適當的SQL數據類型。因此,例如創建這個PROC

CREATE PROCEDURE GetStudent (IN LN VARCHAR(200)) 
    BEGIN 
    SELECT Name FROM Students WHERE LastName = LN; 
    END 

,並把該值(假設這是你的C#代碼。

"'Bobby'; DROP TABLE STUDENTS;" 

基本上將執行這個查詢

SELECT Name FROM Students WHERE LastName ='''Bobby;''DROP TABLE Students' 

這是相當安全的。

當然,您將不得不適應您的特定應用需求,但一般要點是參數化查詢對於所有主要RDMS的SQL注入是安全的。

+0

嗨尼克感謝您的回覆,但你的建議似乎並沒有工作:(但我的方式,我的查詢是仍然可以SQL注入? – 2015-03-31 14:21:43

+0

你可以澄清你的意思是「似乎沒有工作「? – 2015-03-31 14:34:53

+0

我設置了查詢就像你有,如果不返回任何東西,當我創建它我得到一個警告,告訴我語法無效 – 2015-03-31 14:36:13