例如 有個 textbox
SQL 陳述句是 "select * from 資料庫 where username='" & text1.text &"'"
如果textbox沒填'號之類的東西是正常的.
但填個'號就報錯了
這應該算是SQL注入攻擊了吧.可以通過判斷 有沒'號來先做判斷.
但如果 textbox里 一定要有' 號的話,那應該怎么處理?
uj5u.com熱心網友回復:
http://www.2cto.com/database/201212/172678.htmluj5u.com熱心網友回復:
SQL 命令的處理程序是,軟體以字串形式將 SQL 陳述句發送給資料庫引擎,有引擎來執行。因此,這里有一個資料庫引擎對陳述句格式的兼容問題,不僅僅是軟體如果處理的問題。
單引號在 SQL 陳述句中是被當作有特殊語法意義的關鍵字來處理的,因此,一般來說用戶不應將其作為實意字符來使用。也就是說,在注冊創建紀錄時,就應該考慮到用戶名不包含單引號,將其排除。
如果某一資料庫引擎能夠以某種形式兼容它,例如雙寫等,則軟體可以放行這樣的陳述句。
uj5u.com熱心網友回復:
Public Function FmtStr(mStr As String) As String
'處理輸入字串的單引號,字串中有單引號則變為雙引號
Dim i As Integer
Dim Tmpstr As String
Dim s As String
Tmpstr = ""
For i = 1 To Len(mStr)
s = Mid(mStr, i, 1)
If s = "'" Then
Tmpstr = Tmpstr & "''"
Else
Tmpstr = Tmpstr & s
End If
Next i
Tmpstr = Replace(Tmpstr, vbCrLf, "") '過濾回車鍵
FmtStr = Trim(Tmpstr)
End Function
sql="select * from 資料庫 where username='" & fmtstr(text1.text) &"'"
uj5u.com熱心網友回復:
我的意思是 不能"封裝"成一個字串嗎?像現在CSDN論壇雖然是用其他語言寫的,也他也是要用到SQL吧
現在用'單印號是一點問題都沒啊
我C#學了半桶水,也是有這個問題,但他帶了個叫sqlhelper 的類就可以直接把'號當字串處理掉了.
所以我很好奇很想知道這單引號'是怎么處理的
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/116739.html
標籤:VB基礎類
