0
大家好我目前在ASP.NET中使用查詢生成器來創建選擇,插入,更新查詢等等,我已經在我的App_Code文件夾中創建的一些數據集。我已經意識到你要在查詢中使用參數,你必須使用「?」像這樣查詢生成器是否阻止SQL注入?
SELECT * FROM users WHERE email = ?
什麼,我想知道是,這實際上保護你的表從SQL注入或做你需要做更多的代碼,以保護查詢?
大家好我目前在ASP.NET中使用查詢生成器來創建選擇,插入,更新查詢等等,我已經在我的App_Code文件夾中創建的一些數據集。我已經意識到你要在查詢中使用參數,你必須使用「?」像這樣查詢生成器是否阻止SQL注入?
SELECT * FROM users WHERE email = ?
什麼,我想知道是,這實際上保護你的表從SQL注入或做你需要做更多的代碼,以保護查詢?
參數化查詢接受參數並將它們輸入爲適當的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注入是安全的。
嗨尼克感謝您的回覆,但你的建議似乎並沒有工作:(但我的方式,我的查詢是仍然可以SQL注入? – 2015-03-31 14:21:43
你可以澄清你的意思是「似乎沒有工作「? – 2015-03-31 14:34:53
我設置了查詢就像你有,如果不返回任何東西,當我創建它我得到一個警告,告訴我語法無效 – 2015-03-31 14:36:13