0

カスタムバリデーターを構築しましたが、

次のようなSQLクエリがあります。

protected void custom_serverValidate(object sender, ServerValidateEventArgs e)
    {
        connect();
        string strSQL = "select EmailAddress from Accounts_Users where EmailAddress=" + REmailTextBox.Text;
        SqlCommand cmd = new SqlCommand(strSQL, objConnection);
        if (e.Value.ToString() == cmd.ExecuteScalar().ToString())
        {
            e.IsValid = false;
        }
        else
            e.IsValid = true;
        disConnect();
    }

ブラウザと電子メール アドレスでコードを実行して送信すると、タイトルに記載されているエラーが発生します。それを修正する方法?

4

2 に答える 2

2

メールアドレスの引用符がありません。ただし、これは発生するのを待っている SQL インジェクション攻撃です。パラメータを使用するように切り替えてください。

string strSQL = "select EmailAddress from Accounts_Users where EmailAddress = @EmailAddress"

...

cmd.Parameters.AddWithValue("@EmailAddress", REmailTextBox.Text);
于 2012-09-28T15:59:47.017 に答える
1

一重引用符を使用するのを忘れました。使用する:

string commandText = "select EmailAddress from Accounts_Users where EmailAddress=@EmailAttress";
SqlCommand cmd = new SqlCommand(commandText, conn);
cmd.Parameters.Add("@EmailAddress", REmailTextBox.Text);
于 2012-09-28T15:56:52.007 に答える