处理忘记密码/密码重置的最安全方法是什么?我应该将密码发送给用户吗?如果是,那么强迫他们重置它?或者你是否让他们立即重置(不发送电子邮件)并要求其他信息来验证是否是他们?还是有更好的方法?重置密码或提供旧密码的安全方法
8
A
回答
14
不能电子邮件将密码发给用户,因为你不知道它。你已经通过applying something like PBKDF2 or bcrypt“散列”了它来存储,对吧?
如果您在未向帐户所有者确认的情况下重置密码,攻击者可以通过使用受害者的电子邮件地址请求重置,拒绝所有者访问其帐户,至少在他检查他的电子邮件之前。
对于许多应用程序来说,足够安全的方法是将链接发送给帐户所有者,包含一个随机生成的大号。此令牌只应在有限的时间内有效。如果所有者希望重置密码,他们点击该链接,并将其认证为帐户所有者。账户拥有者可以指定一个新的密码。
0
我想你会以编程的方式做到这一点?或者这是服务器故障的问题?
其中一种方法是发送链接到用户的电子邮件帐户。他/她点击该链接,并重定向到您的安全Web窗体,他们重置密码。
不要通过电子邮件发送密码到用户
5
你不应该通过电子邮件发送密码。这里是我用过的一步一步的过程:
- 给用户一个重置密码选项。
- 此选项为用户保存一个唯一的标记。令牌最终会过期(几小时,一天或几天)。
- 链接通过电子邮件发送给包含令牌的用户。
- 用户单击电子邮件链接。
- 如果令牌存在并且未过期,则链接加载新的密码表单。 如果不是,请不要加载新的密码表单。
- 用户设置新密码后,请删除令牌并向用户发送确认电子邮件。
直到设置了新密码,旧密码才会保持活动状态。不要忘记哈希和盐的密码!
相关问题
- 1. 提供密码
- 2. 安全的方式通过URL提供密码?
- 3. 重置新密码与旧密码匹配
- 4. 密码生成无安全编码的URL安全密文
- 5. 解密密码的最佳方法(从安全角度来看)
- 6. 存储密钥和密码的安全方法,用于asp.net
- 7. 带密码的密码重置laravel 4.2
- 8. 如何使我的密码输入密码重置功能安全?
- 9. Spring3安全 - SwitchUserFilter - 可我们的UserDetailsService的实现提供加密的密码
- 10. 安全地重置密码的强大算法
- 11. 导轨,提供密码的视觉反馈,但保持安全
- 12. 重置加密密码
- 13. 的.htaccess安全VS密码
- 14. 相册的密码安全
- 15. MySQL的密码安全
- 16. 在GPG中解密时提供密码
- 17. 重置密码算法
- 18. 无法重置MySQL密码
- 19. 无法重置mysql'root'密码
- 20. 无法重置东方分贝密码
- 21. ASP.Net密码重置时的密码重置为“无效令牌”,密码为
- 22. 如何在春季安全中更改密码时匹配旧密码?
- 23. 如何安全地给R应用程序提供密码?
- 24. 更改密码时验证旧密码
- 25. MySQL密码总是提示重置密码
- 26. PHP安全登录 - 密码加密
- 27. 安全密码存储
- 28. Cordova Build.json密码安全
- 29. 密码管理器安全
- 30. 安全MySQL根密码?
最近刚刚就这个话题进行了一场巨大的讨论:http://stackoverflow.com/questions/2283937/how-should-i-ethically-approach-user-password-storage-for-later-plaintext-retriev – 2010-03-01 23:36:41
如果您的系统有能力查找用户的密码并通过电子邮件发送给他,那么您做了一些非常错误的事情。你永远不应该能够查找用户的密码。您应该只能散列传入的密码并进行比较或更改,并将新密码发送出去。 – Scott 2011-07-08 22:09:49