怎样设计密码重设功能

标签: 设计 密码 功能 | 发表时间:2013-10-01 14:50 | 作者:
出处:http://php.js.cn/

当我们设计一个带有用户注册/登录功能的网站的时候,一个必须的功能就是重设密码。 重设密码功能有很多种设计方式,比如发送一个新密码到用户邮箱等。不过今天我要介绍一个我经常用实现方式。

用户流程:

  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://domain.com/reset-password.php?hash=HASH&user_id=123&timestamp=1392121211
  4. 当用户访问这个URL, 检查HASH是否合法: HASH == MD5 ( user_id + timestamp + KEY)
  5. 检查 timestamp 是不是过期了
  6. 如果所有检查通过,那么显示一个新密码表单给用户

这种方式的好处:

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

更详细的样例代码可以参考这里: http://jszen.com/reset-password-system.6.html


0条评论     到PHP.JS.CN上围观原文

相关 [设计 密码 功能] 推荐:

怎样设计密码重设功能

- - php.js.cn
当我们设计一个带有用户注册/登录功能的网站的时候,一个必须的功能就是重设密码. 重设密码功能有很多种设计方式,比如发送一个新密码到用户邮箱等. 不过今天我要介绍一个我经常用实现方式. 用户忘记密码,来到密码重设界面. 用户输入Email地址,点击重设密码按钮. 用户收到一封密码重设邮件,里面有重设密码的链接,此链接有过期时间.

用户积分功能的设计

- - 四火的唠叨
文章系本人原创,转载请保持完整性并注明出自 《四火的唠叨》. 有一个SNS应用,用户在使用的过程中积累积分,例如登陆+3点,个人空间每次浏览+1点,结交每个朋友+5点等等. 同时,很重要的一点是,用户需要看到自己的积分累计有多少,能够根据积分划分用户等级,在自己的空间展示积分. 在用户量比较大的情况下(例如超过三千万),这是一个比较典型的读写都很频繁的问题,而且写入的次数可能和读取的次数差别不大(大多数SNS应用中,读次数远超写次数的场景居多,例如用户的状态信息,更新一次以后有成千上万的访问).

Siri被指有设计漏洞 可绕过锁屏密码

- Adam - cnBeta.COM
新的iPhone 4S声控功能尽管很酷,但安全公司Sophos则表示,如果没有妥善设定安全特性,没有经过授权的用户也可以通过语音直接在锁屏界面发送短信,拨打电话和发送电子邮件,而无需输入密码. 但这一问题其实可以通过设置解决,只要在密码锁定设置页面里关掉Siri功能即可,但很少有人了解Siri还有这一功能,苹果也没有警示过用户,因此这是一个安全隐患.

谈 DevOps 平台设计:版本号相关功能的设计

- - IT瘾-dev
在设计 DevOps 平台时,笔者认为版本号的管理是一个绕不开的课题. 可是,行业里似乎很少人提这个事,笔者觉得要谈一谈,所以就有了这篇文章. 一万个人的眼里有一万个“版本号”. 笔者这三年在同一家公司里,换岗换了四个团队. 团队的成员组成各异,有的团队都是在大型跨国企业跳槽过来的,有的团队大部人都是刚毕业的.

浅谈社区小游戏功能设计

- 锋 - 互联网的那点事
社区游戏功能的设计方法,很大程度能够决定这个功能能否被社区用户所接受认可,而且能够减少开发的时间成本. 功能设计分为两个阶段:功能玩法设计及功能完善. 两个阶段必不可少,且设计的重心也各有不同. 功能设计玩法的方法总结八个字:“目标,荣耀,互动,惊喜”. 而功能完善的方法总结六个字:“情绪,表现,人性”.

Andy Rubin:Ice Cream Sandwich 的 Face Unlock 功能由 PittPatt 设计

- 云飞风起 - Engadget 中国版
当你仍在为智能型手机支持脸部辨识解锁功能而兴奋的时候,Google Mobile SVP Andy Rubin 在香港 Asia D: All Things Digital 接受访问时指出,Face Unlock 正是来自今年年初收购的 PittPatt. 虽然今天早上发表 Android 4.0 Ice Cream Sandwich 时,Face Unlock 一度失败、无法进行脸部解锁功能,但 Andy Rubin 在现场再次示范时,成功进行有关解锁功能,而他也请主持 Walt Mossberg 尝试用其脸部来解锁(当然是失败收场),以确定其准确度,看来我们真的不必担心太多.

扁平化设计――UI的功能比外观更重要

- - 互联网的一些事-关注互联网产品管理,交流产品设计、用户体验心得
  现在大家都在谈“扁平”设计,扁扁的Windows 8动态砖、扁扁的Google+、Google Now,甚至是即将亮相的iOS 7系统预估也将会是扁平的设计,但,到底为什么?.    UI的功能比外观更重要.   首先,有人说用户界面(UI)外观怎样一点都不重要. 有道理!用户界面最重的应该是功能与便利性,对吧?.

如何设计“找回用户帐号”功能

- 雪冬 - 酷壳 - CoolShell.cn
因为《腾讯帐号申诉的用户体验》一文中好多人觉得腾讯申诉是世界级先进的,并让我拿出一个找回用户的帐号的功能来. 本来不想写的,因为大家看看其它系统的就行的,但是,很明显有些人就是很懒,也不会思考,而且不会观察,所以,我就只好写下这篇科普性常识性的文章. 在行文之前,我得先感谢腾讯公司的至少30名员工在《腾讯帐号申诉的用户体验》一文后的回帖(我STFG(Search The Fucking Google)看到了你们使用的那个固定IP在各个大学论坛上的腾讯的招聘广告),我感谢你们主要有两点:.

Elasticsearch项目实战,商品搜索功能设计与实现!

- - 掘金后端
SpringBoot实战电商项目mall(30k+star)地址: github.com/macrozheng/…. 上次写了一篇 《Elasticsearch快速入门,掌握这些刚刚好. 》,带大家学习了下Elasticsearch的基本用法,这次我们来篇实战教程,以 mall项目中的商品搜索为例,把Elasticsearch用起来.

Facebook 测试「信任朋友」密码解锁功能,真心希望大家永远没机会用到

- Woooon - Engadget 中国版
Facebook 现在正在测试一个全新的「信任朋友(Trusted Friends)」功能,让你可以将遗失的密码透过信任的好友取回. 首先你得先从好友清单中挑选出三到五个好友,然后他们就可以在你失忆时帮助你取回密码. 其实现实生活中还满常见到为了担心弄丢钥匙,而将其托付给挚友家人代为保管的做法,不过还真没想到透过社群网站的人脉资源竟然也可以有这样的应用,颇佩服这样的创意.