我是ASP .Net MVC的新手。我只是想知道,当他/她登录我的网站时,如何加密用户输入的密码?方案如下:
注册用户访问我方并单击登录
输入他的注册用户名和密码,然后单击登录
浏览器将上述两个普通字符串(代码方式)发送到服务器。
在这里,如何将密码安全地发送到服务器?我无法理解它在ASP .Net MVC生成的HTML文件中是如何工作的。能帮我理解一下吗?
谢谢,
答案 0 :(得分:2)
这与ASP.NET MVC或它生成的任何文件都没有多大关系。从浏览器到服务器端代码,密码只是文本。虽然您至少应该在HTML(或任何发出一个的服务器端代码)中使用input type="password"
,以便浏览器知道将值视为密码,理想情况下,浏览器和服务器之间的通道应该用SSL加密。
密码到达服务器后,您想要对其进行哈希处理。尽快执行此操作,以便您不会保留原始密码字符串,如果发生错误,可能会意外地将其记录到某处。为了正确地对密码进行哈希处理,可以对该主题进行大量阅读。我发现this page很好地解释了整个事情的选择和必要性。重点是,您不想知道用户的密码,并且您希望它是单向散列的,无法检索。
(这里要记住的一件重要事情是,即使您运行服务器,您个人也不想知道密码。这是一个很大的原因是因为用户倾向于在其他网站上重复使用密码。例如,可能无意中信任您的网上银行密码。这不是您的服务器的安全性或您自己公开的任何数据的问题,而是处理其他人的问题&#39 ; s 负责任的数据。)
通常,处理散列密码的方式非常标准。您可以将其存储在数据中,并且在用户登录时,您将对其提供的密码进行哈希处理,并将其与存储的哈希值进行比较。这样您就不需要知道用户的实际密码,因为比较哈希值足以确定输入的密码是否相同。