SQL注入式攻擊是指利用設計上的漏洞攻擊系統。如果動態生成SQL語句時沒有對用戶輸入的數據
進行過濾,便會使SQL注入式攻擊得逞。
例如用下面的SQL語句判斷用戶名和密碼:
txtsql="select * from user_info where userid='"&txtuserid &"' and_
password='" & txtpassword.text & "'"
則通過SQL注入式攻擊,在“密碼”文本框中輸入1'or '1'='1,非法用戶便可在
沒有密碼的情況下輕松登錄系統,因為SQL語句已經變為:
txtsql="select * from user_info where userid='"&txtuserid &"' and_
password='" &_1'or '1'='1 & "'"
要防范SQL注入式攻擊,應該注意一下幾點;
1,檢查輸入的SQL語句的內容,如果包含敏感字符,則刪除敏感字符,敏感字符
包含【',>,<=,!,_,+,*,/,(),|和空格】
2,不要在用戶輸入過程中構造where子句,應該利用參數來使用存儲過程。
下面舉例來防范SQL注入式攻擊:
Function inputString(mystr) as String
mystr=Trim(mystr)
mystr=Replace(mystr,"'","'")
mystr=Replace(mystr,";--","")
mystr=Replace(mystr,"=","")
mystr=Replace(mystr,"or","")
mystr=Replace(mystr,"and","")
End Function
txtsql="select * from user_info where userid='" & txtuserid & "' and_
password='" & inputString(txtpassword.text) & "'"
歡迎關注我的公眾號(同步更新文章):DoNet技術分享平臺
閱讀原文