我有一個運行在SSL中的ASP.NET頁面,檢查發生在代碼隱藏。其他可能的SQL注入方式?
我已經做了以下防止SQL注入:
包括正則表達式來過濾掉不必要的/危險人物(基本上,現在只允許0-9,A-Z,和A-Z)。
使用類似於「SELECT * FROM table WHERE username = @Username ...」的查詢。
我也添加了帳戶鎖定,因此您只有有限的嘗試可用。
在IBM AppScan測試這些漏洞之後,似乎我只修復了Blind SQL Injection而不是Authenticated Bypass。
有沒有什麼我錯過了,導致我無法通過漏洞測試?
UPDATE:
...
bool bUser = FilterInput(txtUsername.Text);
bool bPass = FilterInput(txtPassword.Text);
// check for restricted characters
if (bUser && bPass)
Response.Redirect("Login.aspx");
...
public static bool FilterInput(string text)
{
// check if string contains only letters and numbers
return (Regex.IsMatch(text, @"^[a-zA-Z0-9]+$"));
}
沒有任何內部的A-ZA-Z0-9字符應該拋出一個 '假',並會導致頁面重定向/刷新登錄頁面。
數據庫查詢全部使用參數化查詢,登錄工作正常。這部分沒有問題。
您的問題主題似乎與您結束的實際問題無關。您使用#2修復了SQL注入;參數化查詢。 –
正確處理,沒有危險字符。選項1沒有意義,應該完全通過選項2來減輕。 – spender
提供「認證旁路」信息可能是一個想法。搜索「ibm appscan」認證繞過「'(http://www.google.com/search?q=ibm+appscan+%22authenticated+bypass%22&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla: en-GB:official&client = firefox-a)在Google中只產生這個問題。 – spender