避免SQL注入的最佳做法是什麼?避免SQL Server中的盲注SQL漏洞的最佳做法 - ASP.Net
我已經跑在我的應用程序中的McAfee安全檢查, 這說明一個問題在SQL Server
盲SQL注入漏洞和建議是如下
爲了解決這個問題的最好WAY脆弱性是爲了識別每種形式的可接受輸入 參數和拒絕輸入不符合標準。 以下是可接受的解決方案,但它不是最佳選擇。 在包含URL參數的數據輸入字段上實施內容解析。 從任何用戶或動態數據庫輸入中刪除以下字符:(在VBScript中的示例) '(轉義單引號)input = replace(input,「'」,「''」)「(雙引號)input = replace輸入,「」「」,「」))(右括號) input = replace(input,「)」,「」)((左括號)input = replace(input,「(」,「」); (輸入,「|」,「」) - 替換(輸入,「|」,「」) - (破折號)輸入=替換(輸入,「 - 」,「」)| ) 在文本輸入建議追加各地用戶提供的輸入引號。
如果我理解正確的建議,我一定要找到我的應用程序的所有形式和驗證它不接受像" ' () *
任何特殊字符
還有什麼更多呢?
我如何確保我的應用程序不容易受到攻擊的SQL注入
編輯
更多規格:
Protocol https Port 443 Read Timeout30000Method POST
Path /Login
Hea
ders
Referer=https%3A%2F%2Fwww.mydomain.org%2FLogin
Content-Type=application%2Fx-www-form-urlencoded
Body
ctl00_ScriptManager1_HiddenField=0
__EVENTTARGET=0
__EVENTARGUMENT=0
__VIEWSTATE=/wEPDwUJNjc2MTk0ODk1D2QWAmYPZBYCAgMPZBYCAgsPZBYCAgUPFgIeBFRleHQ
FNzxhIGhyZWY9Jy9SZWdpc3RyYXRpb24nIGNsYXNzPSdidXR0b24nPlJlZ2lzdGVyIE5vdzwvYT5kZEMqo
HfESjF9a2aAo6EwUZFLyVY43k2Ywc5HOrQBdZqz
__EVENTVALIDATION=/wEWCgLkzYaLDgKV/vKYDgKBuZWrDQKS/tSgCgLJloD/DALrw4jECgKb/IYvAu2
GxZoEAuemgo8LAoyWmLsKGesm2g0zKeoodCDHz6Mm9GhhkuncAqXhHTAcUjL1R1Y=
ctl00$header1$btnDisclaimerHTMLOK=OK
ctl00$header1$btnDisclaimerHTMLCancel=Cancel
ctl00$header1$btnSubmit=Register
ctl00$cc1$txtEmail=x' wAiTfOr dELay '0:0:20'--
ctl00$cc1$txtPassword=0
ctl00$cc1$cmdLogin=Log In
Protocol https Port 443 Read Timeout30000Method POST
Path /login/
Hea
ders
Referer=https%3A%2F%2Fwww.mydomain.org%2Flogin%2F
Content-Type=application%2Fx-www-form-urlencoded
Body
ctl00_ScriptManager1_HiddenField=0
__EVENTTARGET=0
__EVENTARGUMENT=0
__VIEWSTATE=/wEPDwUJNjc2MTk0ODk1D2QWAmYPZBYCAgMPZBYCAgsPZBYCAgUPFgIeBFRleHQ
FNzxhIGhyZWY9Jy9SZWdpc3RyYXRpb24nIGNsYXNzPSdidXR0b24nPlJlZ2lzdGVyIE5vdzwvYT5kZEMqo
HfESjF9a2aAo6EwUZFLyVY43k2Ywc5HOrQBdZqz
__EVENTVALIDATION=/wEWCgLkzYaLDgKV/vKYDgKBuZWrDQKS/tSgCgLJloD/DALrw4jECgKb/IYvAu2
GxZoEAuemgo8LAoyWmLsKGesm2g0zKeoodCDHz6Mm9GhhkuncAqXhHTAcUjL1R1Y=
ctl00$header1$btnDisclaimerHTMLOK=OK
ctl00$header1$btnDisclaimerHTMLCancel=Cancel
ctl00$header1$btnSubmit=Register
ctl00$cc1$txtEmail=x' wAiTfOr dELay '0:0:20'--
ctl00$cc1$txtPassword=0
ctl00$cc1$cmdLogin=Log In
我不明白什麼是邁克菲發現這裏的問題。 因爲用戶登錄我使用參數化存儲過程。和用戶輸入在客戶端驗證
邁克菲是非常愚蠢的。每個人都知道最好的方法是使用參數(即使在動態SQL中,您仍然使用參數進行用戶輸入) – dotjoe 2012-02-02 15:17:20