登录页面验证 [重复]

Posted

技术标签:

【中文标题】登录页面验证 [重复]【英文标题】:Login page validation [duplicate] 【发布时间】:2018-01-31 08:48:48 【问题描述】:

我是在 asp.net 中编码的新手。我已经在 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

【问题讨论】:

***.com/questions/3969059/… 另外,您不应该以纯文本形式存储密码。使用散列算法,例如 Bcrypt。 你需要密码加密。 这只是一个示例项目。我正在从头开始学习。这就是为什么我没有使用加密。但是,是的,我很快就会添加密码加密。 【参考方案1】:

感谢大家抽出宝贵时间提出建议。 下面的代码成功了

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

【讨论】:

以上是关于登录页面验证 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

身份验证后重定向到所需页面[重复]

意外错误转发或重定向到登录页面[重复]

单点登录CAS使用记:为登录页面加上验证码

php网站验证登录后怎么跳向用户管理页面

在内容页面上验证母版页登录表单时,内容页面字段也得到验证

实现带有验证码的简易登录页面