【发布时间】:2012-04-06 11:22:20
【问题描述】:
我已经找到了一些关于这方面的教程,但它们并不是我想要的,我可以将以下内容用于用户名字段和密码字段
Private Sub UsernameTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles UsernameTextBox.KeyPress
If Char.IsDigit(e.KeyChar) OrElse Char.IsControl(e.KeyChar) OrElse Char.IsLetter(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
但是对于电子邮件字段,我将如何防止该文本框的 SQL 注入,因为某些电子邮件帐户中有句点或破折号?
更新: 下面是我使用的插入语句的示例。
Dim con As SqlConnection
con = New SqlConnection()
Dim cmd As New SqlCommand
Try
con.ConnectionString = "Data Source=" & Server & ";Initial Catalog=" & Database & ";User ID=" & User & ";Password=" & Password & ";"
con.Open()
cmd.Connection = con
cmd.CommandText = "INSERT INTO TB_User(STRUserID, password, Email) VALUES('" & UsernameTextBox.Text & "', '" & MD5Hash(PasswordTextBox.Text) & "', '" & EmailTextBox.Text & "')"
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records")
Finally
con.Close()
End Try
所以我需要使用参数化查询而不是我现在的方式来运行它?
【问题讨论】:
-
较早的文章,但很好的描述:codinghorror.com/blog/2005/04/…
标签: sql vb.net sql-injection