网站开发中用户重设密码 找回密码功能的原理

Python与开源GIS

网站开发中用户重设密码 找回密码功能的原理

2016-12-07 作者: xuzhiping 浏览: 3148 次

摘要: 云算笔记网站具有用户密码重置的功能,这个功能也是大多数网站都具备的。云算笔记网站的实现,使用了Email作为唯一凭证来进行密码重置。这个功能的原理与开发,记录如下: 用户流程: 用户忘记密码,来到密码重设界面 用户输入Email地址,点击重设密码按钮 用户收...

云算笔记网站具有用户密码重置的功能,这个功能也是大多数网站都具备的。云算笔记网站的实现,使用了Email作为唯一凭证来进行密码重置。这个功能的原理与开发,记录如下:

用户流程:

  1. 用户忘记密码,来到密码重设界面
  2. 用户输入Email地址,点击重设密码按钮
  3. 用户收到一封密码重设邮件,里面有重设密码的链接,此链接有过期时间
  4. 用户点击链接,来到密码重设页面,输入新密码,完成

这个流程并没有什么创新,很多网站都是用这套流程。

后端实现方式:

  1. 当用户输入Email地址后,验证这个Email,如果存在于数据库,那么取得用户的user_id
  2. .将user_id和当前时间戳编码成HASH,需要提前准备好一个KEY,并且这个KEY只存在服务器上。 HASH = md5 ( user_id + timestamp + KEY )
  3. 生成一个URL,并且附带刚刚生成的HASH和用户id以及timestamp,比如 http://www.yunsuan.org/reset-password?hash=HASH&user_id=123×tamp=1392121211 ,并将此地址发送至用户的Email。
  4. 当用户从邮箱中访问这个URL时,

  5. 检查 timestamp 是不是过期了。

  6. 检查HASH是否合法: HASH == MD5 ( user_id + timestamp + KEY)

  7. 如果所有检查通过,那么显示一个新密码,将显示给用户。

这种方式的好处:

  1. 不需要额外的数据表
  2. 不用担心参数被用户恶意修改,因为要检查hash是不是等于那几个参数的md5
  3. 密码重设URL自带时间戳
  4. 只要KEY设置的足够长足够复杂,那么可以认为HASH是绝对安全的

关注“开源集思”公众号
获取免费资源

随机推荐


Copyright © from 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org