我目前担心网络应用程序用户的密码恢复方法。
一个想法是使用带有恢复网址的电子邮件,只询问用户他/她的用户名,但如果他/她也忘记了,请询问电子邮件地址。
另一个想法是使用“秘密问题”,然后将密码发送给用户。
您是否知道其他可能更好的密码恢复选项?除了用户沮丧之外,是否存在“密码限制错误”的缺点?
编辑: 昨天有人告诉我,在一些旧版本中,一些客户仍在更新和使用,但电子邮件地址和用户名都不是唯一的。
所以我现在完全被困住了。我想到的唯一一件事是使用一个秘密问题,用户可以在首次登录后选择。但不是直接发送电子邮件打开“新密码对话框”。
你还有什么想法吗?
答案 0 :(得分:2)
我的意见: 假设您要求用户的电子邮件地址在所有注册用户中是唯一的,则密码恢复页面会询问用户的电子邮件地址。您可以将其设置为用户名或电子邮件地址"但我不认为这个小调整会帮助足够多的用户证明你的额外后端处理。
为了增加安全性,请不要确认或拒绝在您的数据库中找到用户名或电子邮件地址。
带有重置密码链接的电子邮件应该可以正常工作。使用哈希(越长越好;绝对20个字符或更多),因此黑客无法轻易猜出重置链接。为了增加安全性,请指定一个时间限制,之后重置链接将不再起作用。
用户点击链接并选择新密码后,请勿自动将其记录到帐户中;让他们从头开始登录。这将确保他们知道他们的新密码,并减少密码恢复代码中的错误,让黑客直接登录帐户。
提醒用户检查他们的垃圾邮件文件夹,并提供一个时间窗口,让他们可以合理地假设他们应该收到重置链接(这样他们就知道在向您抱怨之前要等多久)。
安全问题通常是个坏主意。首先,用户很难记住他们的答案。这就像在用户的密码中添加一些内容,但向全世界提供了一个暗示这个额外部分可能是什么的提示。并且答案往往不区分大小写,只有字母或字母数字。
如果密码恢复系统不适合用户,请确保为用户提供了一种联系方式。但是要小心,因为这可能是Social Engineering黑客攻击的途径。
密码限制可能会令用户感到沮丧。想想实现这个,你允许多少次尝试,以及超出这个限制的后果。大多数人都有一个密码的变体。现在,从安全的角度来看,这并不聪明,但它确实发生了。一个合理的用户可以在一分钟内尝试hooper2012,Hooper2012,hooper20121,Hooper20121。
也许你可以说,在五次尝试失败后,用户在未来的任何尝试之间等待60秒。在额外的五次失败尝试之后加倍到120秒。每五次失败尝试继续加倍等待期。如果你让它继续下去,比如连续50次尝试失败,那么它耗尽50次尝试的最短时间将是1 day 18 hours and 35 minutes。我绝对建议您在代码中使用某些内容来通知您一天中连续失败次数超过12次的任何帐户。
连续50次尝试失败后暂时停用该帐户,并要求用户与您的技术支持联系。再次,要警惕社会工程。
用户提供正确的登录凭据后,将等待时间重置为0.