如何处理忘记密码



我有一个用Java编写的程序,它与我的MySQL服务器通信,以获取用户帐户,版本等信息。该程序的设置使每个用户都有一个服务器的帐户,以便我的程序可以与它通信,但是这些帐户具有非常有限的访问权限。无论如何,当有人"登录"到我的程序时,它会创建一个与MySQL服务器的连接。但是,如果他们忘记了密码,我希望(或者更确切地说,希望)我的应用程序能够重置他们的密码。但是,这带来了一个问题,因为没有登录到服务器的帐户能够修改密码。另外,我(显然是)不想硬编码一些管理登录到程序中,因为反编译的威胁很明显。有什么建议吗?

首先,你没有一个网站的事实使这个问题更加困难。实际上,通过设置一个站点可以极大地简化这个问题,即使它的唯一目的是重置用户的数据库密码。

第二,如果你没有一种独立的、具有合理置信度的方式来识别用户,那么这个问题是无法解决的。如果有人按下"重置我的密码"按钮并说"我是弗雷德",你不知道是不是弗雷德按下了这个按钮……或者是别人。即使你能确定"重置"是弗雷德的电脑上的请求。

第三,如何安全地将密码传递给用户?用电子邮件发送密码是不行的。即使有端到端的电子邮件安全传输,电子邮件仍然可能在用户的邮箱里呆上几天、几个月甚至几年。(密码重置URL至少有一个与之相关的超时…密码本身也不在邮件里)


总之:我的建议是建立一个密码重置网站…或者让用户向服务台提交请求,然后用短信把新密码发给他们。

因为你应该让用户定期更改密码(最佳实践),你可能需要密码重置站点 !

嗯,因为你没有任何网站支持或其他什么,你不能真正做到这一点…所以在你的应用程序中实现一个按钮,它将触发用户的一些问题,如"登录,电子邮件等",这些问题将直接邮寄给你,这样你就可以处理这种情况…

或者你只是简单地在你的web服务器上托管一个小脚本,你的应用程序可以到达,并会产生一个新的随机密码,并将其发送给客户端。就我个人而言,我永远不会选择第一个,太大的压力,脚本!

最新更新