登录页面验证 [重复]
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)
【讨论】:
以上是关于登录页面验证 [重复]的主要内容,如果未能解决你的问题,请参考以下文章