passwords - 丢失帐户的最佳密码重置行为

标签 passwords forgot-password

我想知道当用户请求为不存在的电子邮件重置密码时最好的行为是什么。

上下文:用户尚未登录。他们只需输入电子邮件并点击重置按钮。

  1. 如果我立即告诉请求重置的用户该帐户不存在,这既是一个安全漏洞,也是一个隐私问题。
  2. 如果我什么都不做,而且这是一个无心的错误(他们认为他们有一个帐户),他们会想知道到底发生了什么。最神秘的选择,最少受到滥用。
  3. 我可以发送一封电子邮件,说明已请求重置密码,但没有帐户(应该忽略等等)。这似乎是最无害的,但它有点容易被滥用。

更新:经过进一步考虑,我真的不知道1有什么大不了的,因为他们只需尝试注册/使用即可获得相同的信息同一封电子邮件...除非我遗漏了某些内容...

最佳答案

我个人会这样做:

  1. 用户输入电子邮件地址。
  2. 屏幕显示“请求将被处理,电子邮件已发送”或类似内容。
  3. 如果没有与此电子邮件地址关联的帐户:请勿发送邮件,但不要告诉发出请求的人。
  4. 如果有一个帐户与此电子邮件关联:发送重置电子邮件,其中包括通常的“如果不是,请忽略此邮件,如果您怀疑滥用行为,请联系 $foobar”消息。<

这就是为什么我不会告诉任何人帐户是否与此电子邮件地址关联的原因:隐私。如果你告诉每个人,每个人都可以检查 $person 是否正在使用 $service。

我想包括为什么我不会发送邮件,如果没有这样的用户:为什么我应该?用户可能会知道他使用了哪个电子邮件地址,或者一次尝试多个电子邮件地址(或者只等待很短的时间)。当然,在某些情况下,如果发送这些邮件会更加用户友好,但它们还不足以消除滥用的可能性。 如果只有一个网站做这些事情(只要他们不会在短时间内发送多封邮件),那么滥用的可能性就不会太大,但想象一下每个网络服务都会这样。您只需要收集其中一些服务,然后向“您”不喜欢的人发送电子邮件炸弹,而不会碰到任何垃圾邮件过滤器!

关于passwords - 丢失帐户的最佳密码重置行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10079808/

相关文章:

php - cakephp 2.0 中的忘记密码功能

javascript - 以 html post 形式存储重置密码 token 是否安全?

throttling - Laravel 6 : Throttle Password Reset

encryption - 密码和不同类型的加密

mysql - 将新用户添加到数据库并为其生成唯一的密码

security - 如何在 Silverlight 中加密用户密码?

Wordpress - 在密码更改时禁用用户通知

encryption - bcrypt,河豚的密码最大长度

linux - 编写脚本以使用预定义密码创建多个用户

devise - 如何自定义设计以使用 PostMark 邮件程序发送密码重置电子邮件