我有一个数据库类。我正在使用SQLServerCe来运行所有命令。我把我的查询放入一个字符串变量q。并传入Database类的功能。我有个问题。所有值都被接受。但是当我把单引号放入文本框时。然后它给出了一个错误.....
这是我的代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim q As String = "insert into student_classes (student_class) values ('" & TextBox1.Text & "')"
db.execute(q)
MsgBox("Record Added Successfully")
TextBox1.Clear()
End Sub
答案 0 :(得分:1)
我在可能包含'
的所有字段分配上使用此功能Function EscapeQuote(ByVal msData As Object) As String
Return (Replace(msData, "'", "''"))
End Function
e.g. values ('" & EscapeQuote(TextBox1.Text) & "')"
答案 1 :(得分:0)
您别无选择,只能逃避输入或使用参数化查询/命令。用户可以键入或粘贴到TextBox1中。此外,这是一个SQL注入攻击向量。恶意的人可能很容易在该框中键入内容并对您的数据库造成严重破坏。
您的代码:
Dim q As String = "insert into student_classes (student_class) values ('" & TextBox1.Text & "')"
我们说我输入
史密斯
进入框中。
现在,q的值是:
插入student_classes(student_class)值(' Smith')
一切都与世隔绝。
现在,让我们说,而不是史密斯,我输入:
史密斯&#39); DROP TABLE student_classes; -
您的新查询是:
插入student_classes(student_class)值(' Smith');下降 TABLE student_classes; - &#39)
您可能刚丢失了student_classes表。不要相信用户输入。