0

我正在使用 Visual Studio 中的 VB 创建自定义登录页面。但是,每次我尝试登录时,都会收到以下错误:“'.' 附近的语法不正确”。当我输入错误的用户名/密码组合时,它会识别这一点,但当它正确时,它会收到此错误并无法登录。

        Private Function VerifyLogin(ByVal UserName As String) As Boolean
    Try
        Dim cnn As New Data.SqlClient.SqlConnection
        cnn.ConnectionString = My.MySettings.Default.RedwoodConnectionString.Replace(";Integrated Security=True", ";Integrated Security=False") & UserSetting
        Dim cmd As New Data.SqlClient.SqlCommand
        cmd.Connection = cnn
        cmd.CommandType = CommandType.Text
        cmd.CommandText = "SELECT COUNT (principal_id) FROM _ sys.database_principals WHERE(name = '" & UserName & "')"
        cnn.Open()
        Dim i As Integer
        i = cmd.ExecuteScalar()
        cnn.Close()
        If (i > 0) Then Return True
        Return False
    Catch ex As Exception
        System.Windows.Forms.MessageBox.Show("Error: " & ex.Message & vbNewLine & "Location: VerifyLogin() in Login.vb" & vbNewLine & "Returned value: False")
        Return False
    End Try
End Function
4

1 回答 1

2

查看您的 sql 的这一部分:

FROM_sys.database_principals

看到那里的错误了吗?它认为 the_是完整的表名并且sys是别名。此时,.database_principals不再有效,因此您的错误。

当我们在做的时候,你真的需要修复 sql 注入漏洞!!

于 2012-05-14T20:23:55.583 回答