繁体   English   中英

安全密码重置而不发送电子邮件

[英]Secure password reset without sending an e-mail

如何在不向用户发送电子邮件的情况下实施安全密码重置功能? 我存储了另一个安全的信息,只有用户应该知道,但让用户更新密码似乎是不安全的,因为他们知道一个9位数字。

请注意,由于我正在处理的服务器上的真实数据库用户的限制,用户数据存储在一个简单的SQL表中。

任何输入将不胜感激。

更新:
在尝试OpenID并记住此服务器不允许PHP(因此,cURL)发出任何外部请求后,我尝试再次使用PHP发送邮件。 显然我之前在这台服务器上使用mail()的所有糟糕经历已经消失了。

感谢您的所有输入,我将来可能会再次考虑OpenID。

解决密码问题。 切换到OpenID。 您不必担心密码重置,并且用户只需要一个新密码即可。

这是一个双赢的局面。

通常,在互联网上将用户识别为真实需要“选择加入”模式,其中用户“选择”重置密码,并发送电子邮件确认他们要么重置,要么已经重置,新的重置密码是什么。

实际上,唯一合理安全的替代品是使用类似方法的替代品。 发送电子邮件,短信,他们必须回复,自动电话,他们必须打数字,等等。

我能想到的唯一不使用此系统的方法是安全问题。 当用户登录或无法正确登录多次时,银行通常会使用这些进行额外验证。 它们有时也被用作检索密码的“秘密”代码,但即便如此,它通常通过电子邮件发送给用户,而不是显示在页面上。

如果不发送电子邮件,您将大大限制自己。 将密码重置代码或新密码发送到某人的电子邮件地址的好处之一是,您可以依赖于他们是唯一可以访问其电子邮件帐户的人。

也就是说,您可以使用“秘密问题”方案来允许某人重置密码。 当此人创建他们的帐户时,您需要捕获他们的秘密问题和答案。 然后,您将提示用户提出此问题,并且只有在他们正确回答时才允许重置。

我必须提醒您,这不是保护其密码免受未经授权访问的好方法。 如需一篇好文章,请阅读: http//www.schneier.com/blog/archives/2005/02/the_curse_of_th.html

您无法知道谁正在尝试重置“Joe”的密码。 它可能是乔,或者可能是扮成乔的人。

发送电子邮件的另一种方法是使用一次性重置密钥拨打Joe的一部电话或发送短信。

使用http://www.twilio.com/可以轻松地使用音频消息拨打Joe的电话但是任何人都可以拿起Joe的办公室电话。 所以通常在打电话之前你还需要一个额外的挑战。 例如一个秘密的问题/答案。 通过使用手机秘密问答,你已经让坏人变得更加艰难,但乔仍然可以做到。

另一个想法是将重置消息发送给Joe信任并且知道Joe的人。 (通过电子邮件或电话/短信发送。)此类型的变体是发送给知道Joe的员工,例如他指定的salesrep,HR rep等。

使用帖子:发送带有重置代码的蜗牛邮件信件。 可能需要几天才能到达那里,但邮件被盗是联邦说唱。 请参阅http://www.postalmethods.com/如果可能出现非常糟糕的负面结果,这可能是一个很好的解决方案。

对于上述任何一项,Joe会在设置帐户时输入信息。

另一种模式是要求乔打电话到服务台,让人类询问他。

底线是没有技术是完美的。 请参阅twitter breakin故事: http//www.technewsworld.com/story/67612.html? wlc = 1247790901&wlc = 1248238327

最后想到:不要忘记反网络钓鱼。 通常通过让乔选择一个图片,该网站将在做重要事情时向他展示。 这个想法是网络钓鱼网站将无法复制用户界面,从而使乔怀疑他可能没有到达正确的网站。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM