为什么"忘记密码"不好?

dud*_*der 14 php security authentication passwords login

我发现了这个说法

不要使用"忘记密码"功能.但如果必须,请确保您仅向实际用户提供信息,例如使用合法用户过去提供的电子邮件地址或质询问题; 在提供正确的密码之前,不允许当前用户更改此身份信息.

有人可以澄清为什么忘记密码会有风险吗?我计划通过向用户发送电子邮件中的链接以重置密码来处理它,但不会向他们提供旧密码(因为它仍然是哈希值),并且在重置时不会要求他们提供旧密码.我的做法有风险吗?

nic*_*ico 12

只要您不存储密码,您的方法是绝对正确的.

提出安全问题绝对是错误的,因为它只是通过猜测答案而被绕过.

只需稍加编辑:虽然可能很难捕获所有这些,但您应该尝试禁止使用mailinator电子邮件帐户(或来自类似服务的电子邮件地址),因为mailinator +忘记密码=灾难.


Phl*_*lip 2

你的方法对我来说听起来很安全:)当然它应该是一次性链接!

此外,“成功”和“未找到电子邮件地址”消息/页面应该相同。并且有匿名短信。

喜欢:

“如果您的邮件地址在我们的系统中,我们已向您发送一封电子邮件”

这样,别人就无法确定该电子邮件地址是否在您的系统中!

  • 没有什么比丢失登录信息并且系统没有通知您输入的电子邮件地址是正确的更糟糕的了。请不要在成功和失败时打印相同的文本,否则用户会讨厌你。因为,您知道,用户*确实*使用多个电子邮件地址,并且用户*确实*忘记了他们的密码和登录信息,甚至不知道他们使用哪个电子邮件地址注册了哪个网站。不要忘记:您的网站*对您来说*可能是世界上绝对最重要的东西,但对于用户来说,它可能只是他偶尔使用的东西,并且不经常登录。 (7认同)
  • @Phliplip:他们应该等多久?等一下?10分钟?他们尝试每封电子邮件需要一个小时吗?或者他们应该只输入所有电子邮件地址,然后仍然等待一个小时?如果他们写错了怎么办?帮助用户相处并没有什么错。相信我,如果用户需要很长时间才能进入系统,如果他们只想查找一些内容,他们会变得愤怒。他们也可能同时创建一个新的登录名,这可能不是您最初想要的。 (2认同)
  • 抱歉,我不同意 OregonGhost 的观点。OWASP 表示,无论用户是否有错误的密码、错误的用户名等,都会显示相同的消息,因为黑客可以查明他们获得的错误信息,并正确地集中他们的黑客努力。如果您提供相同的消息,黑客就很难尝试猜测哪些信息是错误的。如果权衡是访问符合 PCI 的站点,则用户可以针对任何登录错误处理相同的消息。 (2认同)