为什么挑战 - 响应方法对于忘记密码的解决方案很糟糕?

时间:2009-03-05 04:59:25

标签: security authentication forgot-password

我的公司正在开发一个在线人力资源和薪资应用程序,其中保护访问权限至关重要。我很清楚如何锁定大多数身份验证/授权过程,“忘记密码”页面除外。

我的初步计划是要求用户输入电子邮件地址和对先前选择/输入的质询问题的回复,并将临时密码邮寄到列出的电子邮件中(假设电子邮件是有效)。但是我已经阅读了herehere(都是在SO上),质疑 - 响应方法是不安全的。

如果我们只是通过电子邮件发送临时密码,那真的是不安全吗?我能想到的唯一更安全的选择是要求用户致电他们的客户服务代表,这将给我们的员工带来很大负担。

我错过了什么......有更好的方法吗?谢谢!

6 个答案:

答案 0 :(得分:15)

请勿通过电子邮件发送临时密码,请将用户的URL +令牌通过电子邮件发送到重置密码页面。这样,没有密码永远不会转换为未加密的手。对于最终用户来说,如果他们试图访问该页面并且已经使用了重置令牌,他们的帐户也会受到损害,这一点也很明显。

从评论中添加:

我认为质疑 - 回应(“秘密问题”)方面实际上会使事情变得不那么安全,因为它们通常是通过研究有关目标的公共信息而发现的事情。总计步数越少,在没有人知道的情况下可以破坏的步骤越少。让重置的电子邮件尽早发布,通常是让人们知道正在进行尝试的好方法。

答案 1 :(得分:3)

正如本article所述,佩林州长电子邮件帐户最近使用以前提出的问题的答案进行了黑客攻击。来自文章:

  

如帖子中所详述,佩林黑客并不需要任何真正的技能。相反,黑客只是使用她的生日,邮政编码和她遇到配偶的地方的信息来重置佩林的密码 - 她的雅虎帐户上的安全问题,通过简单的谷歌搜索得到回答(瓦西拉高)。

答案 2 :(得分:1)

管理丢失的密码有几种常用方法:

  • 秘密问题:它实际上是一种较弱的身份验证形式,就像上面发布的人一样。用户可以选择非常简单的东西,很容易猜到。我建议不要这样做,因为它不需要任何技术“黑客”

  • 邮寄新密码。要绕过此控制,需要访问电子邮件帐户或需要中间人(MITM)位置:您可以从用户的收件箱中读取临时密码,也可以在中间截取。这种方法对于误用是成熟的,因为如果他不能用新密码阅读电子邮件,任何人都可以重置密码并强迫用户退出系统。

  • 邮寄密码重置哈希,为了规避这一点,您需要访问收件箱或MITM,就像之前的情况一样,但在确认完成之前,实际上不会重置密码。因此,即使他没有阅读电子邮件,也不能将用户锁定在系统之外。每8小时向一次重置添加一个冷却计时器,以防止您的系统充斥用户的收件箱。

  • 考虑一些带外通信,例如,在打印的合同中,记下PIN。然后让用户通过已知的电话号码拨打您的服务台(查看来电显示)并提供他的用户名和密码。

答案 3 :(得分:0)

像SO那样外包整个密码管理并使用OpenId或类似方法不是很容易/可行吗?当然,这会增加另一个依赖关系,但是你可以根据需要保存(和保护)密码并按照你的描述处理它们。

答案 4 :(得分:0)

您说这是一个在线人力资源和工资单应用程序。您是否可以选择用户表示他/她忘记了他/她的密码,并向人力资源代表或组织中的某位官员发送消息,该消息可以确认身份然后重置密码?

答案 5 :(得分:0)

简而言之,挑战问题通常是最薄弱的环节。它们比密码更容易猜测并且有效地作为密码的代理操作,因此它们实际上降低了安全性而不是通过提供实际上更容易破坏的另一个攻击向量来增强它。 Web Application Hacker's Handbook有关于此区域的一些很好的信息。