我想知道当用户忘记密码时什么是更安全的选择
- 将随机生成的新密码发送到该电子邮件地址(我的数据库中的所有电子邮件地址均已确认有效)。
或者
- 发送一封包含链接的电子邮件,该链接会在特定时间范围内过期,用户可以在其中重置密码。
除了后者使用额外的表之外,您认为什么是更安全/更好的做法?
最佳答案
如果您发送包含密码的电子邮件,则意味着:
- 密码将通过某些网络(未加密)并且可能被“看到”
- 密码将保留在用户的邮箱中
- 可能被黑客攻击
- 任何有权访问计算机的人都可以看一下
所以,通过电子邮件发送密码似乎不太安全......
作为用户,我会觉得我的密码通过包含某种 token 并在一段时间后过期的链接“更安全”。
“一段时间后过期”部分很重要,顺便说一句:它确保如果有人在一段时间后点击链接(例如,访问用户邮箱的人) ,该链接将不会用于生成新密码。
当然,这意味着我无法仅通过“在我的邮箱中搜索”来找到密码 - 但我总是可以要求一个新密码,但我又忘记了 ^^
关于security - 什么更安全?我应该向用户发送包含过期 URL 的电子邮件以重置其密码,还是应该通过电子邮件发送新生成的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2277117/