找回密码的功能设计 - 会飞的猪

找回密码的功能设计

作者: 会飞的猪

全网最全的网络资源分享网站

手机扫码查看

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

广告位

所有需要登录的网站,都会提供"找回密码"的功能,防止用户忘记密码。

bg20190202701.png

正确设计这个功能,保证安全可靠,并不简单。下面就是安全专家 Troy Hunt 给出的设计指南

一、如何保存密码

一个网站要想保证密码安全,第一步就是以正确的方法保存密码。一般说来,密码有三种保存方式。

(1)明文保存

"明文保存"就是用户的密码原文不动地写入数据库。这种方式最不安全,极易泄漏,应该严格禁用。

(2)加密保存

"加密保存"就是使用密钥,将密码加密后,以密文保存进数据库。这种方式虽然有一定的安全性,但是终究还是可以用密钥还原密码。因此,还是存在泄漏的可能,也不推荐使用。

(3)哈希保存

"哈希保存"就是对密码使用哈希算法,将哈希值保存进数据库。为了增加随机性,防止彩虹表这一类的工具,计算哈希的时候,每个用户都有一个不一样的盐值(salt),也会同时保存进数据库。

哈希是单向运算,无法还原,所以即使哈希值泄漏,一般来说,也不会暴露用户的原始密码。

第一条规则:密码永远都要哈希保存。

二、密码重置

如果密码是哈希保存,用户一旦忘记密码,网站也无法知道原始密码是什么,只能让用户重置密码。

第二条规则:找回密码就是让用户重置密码。

重置密码又有两种做法。有的网站先自动改成一个随机密码,然后再让用户登录后自己改掉。这样做的风险在于,你必须把随机密码告知用户,通过邮件或短信,这个过程中就有可能泄漏。

第三条规则:重置密码的时候,要给出一个链接,让用户到网页上自己修改密码。

重置链接由于是明文传播,而且直接修改密码,所以必须有失效时间。一般来说,可以设成10分钟失效。

三、用户名还是邮件地址?

重置密码之前,必须知道重置谁的密码。这时需要用户提供,注册时的邮件地址。

第四条规则:重置密码之前,如果用户提供了错误的邮件地址,不要提示他。

这是因为如果提示了,数据库不包含某个邮件地址,就可能像下图那样,泄露用户的隐私,被钓鱼者利用。

bg20190202702.png

  • 本文最后更新于2020-2-19,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
    分享到:
    打赏
    -版权声明-

    作者: 会飞的猪, 转载或复制请以 超链接形式 并注明出处 会飞的猪
    原文地址: 《找回密码的功能设计》 发布于2020-2-19

    阅读时间:   发布于:2020-2-19
    文章标题:《找回密码的功能设计》
    本文链接:https://ojbk520.cn:443/post-127.html
    本文编辑: 会飞的猪,转载请注明超链接和出处会飞的猪
    收录状态:[百度已收录][360未收录][搜狗已收录]

    评论一下

    切换注册

    登录

    忘记密码?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册

    找回密码的功能设计

    长按图片转发给朋友

    觉得文章有用就打赏一下文章作者

    支付宝扫一扫打赏

    微信扫一扫打赏