首页 >后端开发 >php教程 >一般的“用户密码重置”算法是如何的?

一般的“用户密码重置”算法是如何的?

WBOY
WBOY原创
2016-06-06 20:11:501224浏览

比如,当用户Email收到密码重置的链接后,单击链接可以打开“重设密码”的页面,该页面上一般只有两个文本框:密码框和密码确认框,这个时候用户提交的时候如何保证安全?主要是如何保证重置的确实是Email链接里指定的用户的密码(而不是别人的密码)?

补充:
重置密码表单上除了上文提到的一个密码框和一个密码确认框外,我想一般还有一个User_id之类的隐藏框吧?貌似现代浏览器可以修改隐藏框的实际值,然后提交后就变成更改其他人的密码了!

回复内容:

比如,当用户Email收到密码重置的链接后,单击链接可以打开“重设密码”的页面,该页面上一般只有两个文本框:密码框和密码确认框,这个时候用户提交的时候如何保证安全?主要是如何保证重置的确实是Email链接里指定的用户的密码(而不是别人的密码)?

补充:
重置密码表单上除了上文提到的一个密码框和一个密码确认框外,我想一般还有一个User_id之类的隐藏框吧?貌似现代浏览器可以修改隐藏框的实际值,然后提交后就变成更改其他人的密码了!

你仔细看下那个链接,是有一个随机的token参数的,点开链接如果token不匹配提示错误页面,匹配则是修改密码页面,而且token也是跟着密码一起发给后台的,后台还是要再检验一遍的。至于token肯定是存在后台数据库中的,且越长越安全。如果简单点可以采用uuid算法作为生成token算法。

链接是发往用户邮箱的,也就是只有进入了邮箱才可能得到链接,有这一层安全验证已经差不多能保证“打开密码重置链接的人”即是需要重置密码的人了。再可以让链接中的token有效期短一些或只能校验一次,就可以把安全级别再提高很多了

补充楼上的答案。在token上有效期上再加上只能用一次。更安全了。如果还要增加安全。可以限制url的来源是用户对应的邮箱服务商。其实有有效期和只能用一次就够了。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn