>백엔드 개발 >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으로 문의하세요.