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 回答