【发布时间】:2016-06-14 21:59:01
【问题描述】:
我正在重写一些 VB6 遗留程序并运行以下代码(为安全起见更改了变量名)...
Dim blnValue1 As Boolean
Dim strForValue As String
sqlQuery = "SELECT a.* FROM databaseName a " & _
"WHERE a.ssn = '" & strInput1 & "'" & _
" and a.column2 = '" & strInput2 & "'"
Set rsInsert = New ADODB.Recordset
rsInsert.Open sqlQuery, Connection
blnValue1 = False
Do Until rsInsert.EOF
strForValue = Trim(rsInsert("value"))
If strForValue <> "1234" Then
[some unimportant code here]
End If
blnValue1 = True
rsInsert.MoveNext
Loop
If blnValue1 = False Then
InsertValue
End If
我知道这可能很明显,但我想确保:在这段代码中永远不会调用 Sub“InsertValue”,对吧?我的意思是当 Recordset 正在读取时 bool 设置为 true。是否有我不知道的 VB6 或 Recordset 特定规则会在某些时候使“blnValue1”为假?
我无法运行旧的 VB6 代码来检查它是否到达“InsertValue”子,因为它会访问我不想弄乱的生产文件,直到完美处理代码所做的一切。
【问题讨论】:
-
啊! SQL 注入漏洞,烧死我们了!
-
当然可以。只需要 rsInsert 记录集中没有记录。
标签: vb6