security - 什么更安全?我应该向用户发送包含过期 URL 的电子邮件以重置其密码,还是应该通过电子邮件发送新生成的密码?

标签 security passwords reset-password

我想知道当用户忘记密码时什么是更安全的选择

  • 将随机生成的新密码发送到该电子邮件地址(我的数据库中的所有电子邮件地址均已确认有效)。

或者

  • 发送一封包含链接的电子邮件,该链接会在特定时间范围内过期,用户可以在其中重置密码。

除了后者使用额外的表之外,您认为什么是更安全/更好的做法?

最佳答案

如果您发送包含密码的电子邮件,则意味着:

  • 密码将通过某些网络(未加密)并且可能被“看到”
  • 密码将保留在用户的邮箱中
    • 可能被黑客攻击
    • 任何有权访问计算机的人都可以看一下

所以,通过电子邮件发送密码似乎不太安全......


作为用户,我会觉得我的密码通过包含某种 token 并在一段时间后过期的链接“更安全”。

一段时间后过期”部分很重要,顺便说一句:它确保如果有人在一段时间后点击链接(例如,访问用户邮箱的人) ,该链接将不会用于生成新密码。


当然,这意味着我无法仅通过“在我的邮箱中搜索”来找到密码 - 但我总是可以要求一个新密码,但我又忘记了 ^^

关于security - 什么更安全?我应该向用户发送包含过期 URL 的电子邮件以重置其密码,还是应该通过电子邮件发送新生成的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2277117/

相关文章:

linux - 从 ssh 登录中删除公钥

php - 拒绝使用 .htaccess 访问多个 .php 文件?

javascript - 我的 eval() 安全吗?

security - 如何在没有密码的情况下在版本控制中 checkin Azure .pubxml?

.NET 成员(member)资格 - 注册、登录等工作。密码重置没有

c# - 如何使用 ASP.NET MVC 5 的 UserManager 重置密码

firebase - 如何检查Firebase身份验证中是否存在给定电子邮件?

c# - 是否可以提高 IE .NET 附加组件的安全性?

javascript - javascripts 访问密码字段值是否被视为安全风险?

java - Spring Security 和 BCryptPasswordEncoder 用于注册和登录