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

そこの間違いがわかりますか?_は完全なテーブル名でsysあり、エイリアスであると考えています。この時点で、.database_principals有効ではなくなったため、エラーが発生しました。

そして、私たちがそれに取り組んでいる間、あなたは本当にSQLインジェクションの脆弱性を修正する必要があります!!

于 2012-05-14T20:23:55.583 に答える