2014-12-23 116 views
-3

我做了一個SQl注入到我的數據庫,作爲我的登錄頁面的測試。用戶嘗試正確插入正確的用戶名和密碼。但是,當用戶未能輸入正確的數據時,將被導入另一個Web表單以恢復密碼。在密碼恢復表單中,用戶將獲得顯示的用戶名(如果存在於數據庫中)並且電子郵件地址的字符很少作爲提醒!然後用戶可以將完整的電子郵件地址確認爲文本框,以便將個人詳細信息發送到該電子郵件。 我試圖用這個測試來注入我的SQL:SQL注入攻擊asp.net

 ' or'a'='a 

該代碼被輸入到用戶名字段和密碼,以及某些嘗試後,我被引導到密碼恢復頁,我的第一個電子郵件到我的數據庫顯示給我作爲會員!這意味着這段代碼使我能夠訪問我的數據庫的第一行。有什麼辦法可以阻止對我的代碼的這種攻擊,即加密我的SQl語句!

+6

查看關於[參數化查詢](http://msdn.microsoft.com/en-us/library/vstudio/bb738521(v = vs.100).aspx) –

+0

如何刪除內聯動態sqls並使用存儲過程開始? –

回答

1

使用存儲過程或至少參數化查詢,不要使用字符串連接。

+0

如何在我的select語句中執行此操作我從未使用過參數化查詢? – Chris

+0

使用SqlCommand.Parameters.AddWithValue方法,將其記錄在此處:http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlparametercollection.addwithvalue(v=vs.110).aspx –

+0

I只是想修改MailCheck方法中的最後一個select語句,但仍然發現將它作爲Paramaterized查詢有點困惑 – Chris