我一直在研究在mysql中存储用户密码,无处不在的回复是使用MD5或SHA1等加密算法来存储它。但是,如果用户x忘记密码并希望将其发送给她,该怎么办?然后怎样呢?我不能发给她md5哈希!这个问题在现实世界中是如何处理的?有两个数据库吗?一个比较哈希和另一个忘记密码?但有什么区别,那时两者都是只读的连接到它的sql用户。你是怎么做到的?谢谢!
答案 0 :(得分:10)
从不向用户发送密码是非常标准的安全做法。相反,您提供的密码重置实用程序与其访问电子邮件帐户的能力和/或回答有关其个人资料的问题(如安全问题或他们所处的邮政编码)有关。
功能概要:
答案 1 :(得分:3)
最佳解决方案是向用户发送一个链接,用户可以输入新密码,而无需输入被遗忘的密码。
这个链接应该只工作一次,它应该只能工作几个小时。
不要创建新密码并通过邮件发送;用户会感到很想使用该密码(忽略通过不安全的渠道传输的事实)。
答案 2 :(得分:2)
密码不应以纯文本(they should be hashed)存储,这是正确的,因此无法将其传递给忘记密码的用户。
基本上,您希望的是一种规避正常身份验证方案的方法,您首先应该意识到这种机制是应用程序的后门。
通常会假设只有所需的用户才能访问发送到您的应用程序注册的电子邮件地址的电子邮件。正是基于这种假设,“标准”密码重置机制是基于的。以下是我对此的看法:
这不是一个完美的计划。这是安全性和便利性之间的权衡,并且毫无疑问它构成了应用程序的后门。对于低价值的应用程序,它通常足够好。
进一步阅读: