如何设计密码重置功能
大约 2 分钟
如何设计密码重置功能
密码重置
功能或者说密码找回
功能是互联网行业的一项基本功能,本篇文章主要总结一下完成这个功能需要注意的一些点,主要遵循以下几条原则:
- 密码要「安全的」存储,我个人一般推荐
bcrypt
加密算法,当然PBKDF2
和scrypt
也很不错。 - 密码找回功能,不能告诉用户原来密码,而是应该让用户重置密码。
- 尽量不要采用预先分配一个密码,然后告诉用户这个初始密码再让用户去修改的办法。
- 而是应该发给用户一个有时效性的链接,让用户在规定的时间内,通过这个连接来重置密码。
- 避免前后端明文传递密码
- 密码找回的时候,因为需要知道找回谁的密码,所以需要一个身份标识,一般建议采用邮箱或者手机号,需要注意的是,无论这个身份是否存在,都不能页面提示 这个身份是否存在,避免被扫描。而是应该无论用户输入邮箱还是电话,都正常发验证码。如果用户瞎填,他自然收不到验证码。建议在邮件内容中提示是正在重置xxx网站的密码。
- 同时为了避免机器人,在重置密码提交form时需要增加验证码环节
- 尽可能让用户在正确填写验证码以后,在验证一下一些问题。比如一些用户提前设置的问题,如果没有的话,可以根据具体的业务,比如登录地点,上次登录时间,xxx是你的朋友么等等的问题。