当前位置:  开发笔记 > 后端 > 正文

为"忘记密码"做代码的最佳方式

如何解决《为"忘记密码"做代码的最佳方式》经验,为你挑选了2个好方法。

网站,我想实现忘记密码.我正在使用以下步骤

    表格上有登录ID和电子邮件ID和CAPTCHA的输入框

    当用户输入详细信息并提交时,在验证后端的后端生成新密码并在数据库中替换旧密码.

    新的passowrd通过电子邮件发送给用户.

请帮助我,不管我做得对不对?

是否还有其他安全机制?

[编辑] 谢谢,我收到你的回复.真的,这是一种安全的机制.但在这里我几乎没有怀疑

    当用户在忘记密码页面输入loginId和电子邮件地址时,我应该向用户显示什么消息?

    消息对于有效用户和恶意用户是否相同?

    使用CSRF令牌的好处?任何帮助/链接

    当用户点击链接时,我应该怎么做; 因为我猜用户应该自动登录到他们的帐户 - 然后我有2个选择(第一个)自动向用户发送新密码(第二个)新表格将显示给用户,用户将使用旧密码和新密码两次?

请帮忙?



1> blowdart..:

我明白为什么你想要一个CAPTCHA,但我会采取不同的方法.

    请求密码重置时,检查在最近X分钟内是否尚未为该帐户请求重置.如果已经请求了密码,则忽略重置请求.

    检查请求密码重置的IP.如果该IP请求在最后Y分钟重置密码,则忽略该请求.

    如果1和2中的检查通过检查帐户是否存在.如果它不忽略该请求.

    如果我们已经实现了这一点,那么生成一次性令牌,该令牌在Z分钟后到期,并且密码重置URL包含此令牌.将此邮件发送到注册的电子邮件地址 加载URL时,提示输入新密码并重置.

对于那些认为你应该告诉用户电子邮件去了哪里的人我非常不同意.这是"信息泄露",即使您将其限制为域名.例如,我说我已经在JeffAtwoodEatsBabies.com上注册为blowdart.如果Jeff要求我重置密码并且您显示了注册域,那么他会看到idunno.org.这是我的个人领域,因此杰夫知道,吹风用户实际上就是我.这是一件坏事.我不应该使用hotmail或gmail或其他任何东西注册,以保护自己免受代码向所有人显示电子邮件域名.

此外,您根本不应该显示错误消息.无论发生什么情况,用户名实际上都没有注册,或者提出的请求太多或天空已经下降,您应该告诉用户密码重置过程已经开始.通知用户帐户不存在是更多信息泄露.

您可以做的最后一件事是将CSRF令牌添加到重置请求页面,因此无法从其他网站驱动它.

跟进

所以回答你的进一步问题.

    你展示的信息取决于你."重置密码的说明已通过电子邮件发送到此帐户的注册电子邮件"是一个想法,但实际上这取决于您的受众.

    已经在上面提到了.

    维基百科是一个很好的起点.你如何做到这取决于你的平台,这是一个完整的其他问题!对于ASP.NET,您可以查看我的codeplex项目,http: //anticsrf.codeplex.com 或查看ViewStateUserKey.

    单击链接后,我将首先根据应用的用户名验证URL中的令牌,然后我将允许用户输入新密码,或生成新密码并通过电子邮件发送.你不能提示旧的,因为整点是用户已经忘记了它!



2> Sampson..:

有很多方法可以实现.正如您所说,生成新密码并将其发送到注册的电子邮件地址是一种方法.我不建议你去那条路,因为我的密码会在每次有人试图猜测我的密码时重置.

相反,我迄今为止看到的最好的事情就是通过电子邮件向已注册的电子邮件发送一个链接,该链接将开始密码重置过程.您甚至可以通过显示注册时使用的电子邮件地址的掩码版本来让用户知道要检查的电子邮件地址:

一封电子邮件发送到********@ hotmail.com.请检查您的收件箱以继续.

请务必考虑我们这些可能忘记注册了哪个电子邮件地址的人 - 通常一些安全问题是提供这些信息的好方法.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有