登录页面验证

时间:2018-01-31 08:48:49

标签: c# sql asp.net sql-server

我是asp.net中的新编码。我已经完成了一个(Web表单)登录页面,并在asp.net + c#中进行了验证。问题是当我以小写/大写字母输入对应于电子邮件的密码时,它授予我不应该发生的条目。我已经在这里发布了许多用于登录页面的代码,但同样的事情正在发生。 例如,如果db中的密码是“ss”并且我们输入“ss”,“Ss”,“sS”或“SS”;我可以登录。我怎么能阻止这种情况发生?

我在这里发布我的代码。请帮忙。

protected void btn_login1_Click(object sender, EventArgs e)
 {
      SqlConnection con = new SqlConnection(@"Data Source=SHA\SQLE2012;Initial Catalog=OnlineShoppingStore;User ID=sa;Password=56238");
     con.Open(); 
     SqlCommand cmd = new SqlCommand("usp_ViewUserByUserId", con);
     cmd.CommandType = CommandType.StoredProcedure;
     cmd.Parameters.AddWithValue("@Email", txt_email.Text);
     cmd.Parameters.AddWithValue("@Password", txt_password.Text);
     string output = cmd.ExecuteScalar().ToString();
     cmd.ExecuteNonQuery();
     if (output =="1")
     { 
         Response.Write("<script>alert('Login Successful!!')</script>");
         Session["Email"] = txt_email.Text;
         Response.Redirect("Home.aspx");            
     }
     else
         Response.Write("<script>alert('Login Failed! Incorrect username/password')</script>");
     con.Close();

 }

这是我的存储过程

ALTER PROCEDURE [dbo].[usp_ViewUserByUserId] 
    @Email as varchar(50),
    @Password as varchar(50)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    select count(*) from tbl_Customer  where Email = @Email and Password = @Password

end

1 个答案:

答案 0 :(得分:0)

谢谢大家花时间提出建议。 下面的代码完成了这个技巧

select count(*) 
from tbl_Customer  
where Email = @Email and BINARY_CHECKSUM(Password) = BINARY_CHECKSUM(@Password)