我試圖強調測試我係統的登錄單元。我的系統被設計這樣的 -SQL,Microsoft SQl
如果用戶輸入用戶標識 - ABCD和密碼傳遞則服務器需要這些參數,並準備一個SQL命令和它觸發到Microsoft數據庫 -
select password from UserInformationTable where userid = 'abcd';
返回值與給定的密碼傳遞進行比較,然後將結果發送給客戶端。
我成功地分解成使用以下方法的系統 -
用戶輸入用戶標識 - <abcd1 or drop table UserInformationTable
>。這工作,我的完整UserInformationTable被刪除。
有沒有處理這種黑客問題的優雅方式。一種方法是檢測用戶標識中的'或'子串,但我沒有發現這非常優雅。有什麼辦法可以限制否。在SQL語句中的查詢?
感謝和問候, Radz
你實際上是在使用參數還是隻是連接查詢字符串?此外,這是MySQL或SQL Server和你使用什麼語言? – 2010-12-15 01:01:42
閱讀SQL注入。然後閱讀爲什麼存儲任何類型的明文密碼都不好。然後閱讀今天的CodingHorror.com關於如何利用第三方進行身份驗證是一條好路線。 – Joe 2010-12-15 01:04:25
你必須使用SqlParameters [helplink](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx) – Raghuveer 2012-04-11 09:36:32