oschina密码找回功能是怎么实现的?

FoxHu 发布于 2012/06/07 08:28
阅读 555
收藏 2
@红薯 ,oschina提供了非常人性化的密码找回功能,我也想在自己的项目中使用这个功能,oschina好像是根据用户填写的email账户,然后向这个账户发送重置密码的url连接,url连接带了两个参数一个是emai,一个是key;例如
http://www.oschina.net/home/reset-pwd2?email=XXXX@gmail.com&key=e13e1efd923e55eee5fe3e1503f1bdfdb2fdc15;
有两个问题比较困惑:
(1)请问这个key是根据什么生成的?而且发现再次重置的话,这个key也是变化的;
(2)在密码重置页面重置密码成功后,如果在当前页面重新输入修改密码会提示“无效请求参数,重新请求密码重置请点击这里”,也就是密码重置后必须再次发送重置连接才可以重置密码,这个又是怎么实现的?
谢谢!
加载中
1
红薯
红薯

key 是对 email 和 当前的密码经过一定的组合,然后做 SHA1 哈希后的值。

因此当你修改过密码后,这个 key 就失效了

FoxHu
FoxHu
@红薯 明白了,非常感老大的回答!
0
红薯
红薯
我先想想这个问题我要是回答了会不会有什么危险 :)
FoxHu
FoxHu
呵呵,我可不是想破解密码,只是想在自己的系统中实现这个功能!
0
XT
XT

这个原理应该很简单:后面的key,是用前面的email、时间、随机数生成的一个摘要,将email(附加一些字符)为key,key为value写入memcached类似的缓存,缓存一端时间(这个就是重置有效时间),用户点击这链接时,判断一memcached中是否存在这个关系即可。

我认为这个还是比较安全的。

FoxHu
FoxHu
谢谢!
返回顶部
顶部