找回密码?为啥不直接把密码给我呢?
作为前端工程师,我们在开发用户系统时总会遇到一个经典问题:为什么找回密码功能不直接显示原密码,而是强制用户重置?
密码存储机制解析
哈希算法的不可逆性
现代密码存储的核心是哈希算法,后端处理逻辑大致如下:
图片
关键点说明:
盐值(Salt)随机生成并与哈希值合并存储相同密码每次哈希结果不同哈希过程不可逆,无法从存储值反推原始密码前端视角的限制
即使后端存储了原始密码(虽然绝对不应该),前端也无法直接获取:
图片
安全规范:
任何API都不应提供密码查询接口密码字段在传输时应始终加密(HTTPS)前端不应在任何地方存储密码明文安全风险防控
传输层保护
即使系统存储了明文密码(再次强调:这很危险),在找回流程中直接返回密码仍存在风险:
图片
防护措施:
CSRF Token验证CORS严格配置请求频率限制HTTPS强制启用密码生命周期管理
前端验证逻辑示例:
图片
安全策略:
前端验证减少无效请求后端最终校验保证数据可靠性密码历史记录检查(后端实现)法律合规要求
根据GDPR等法规要求:
密码属于个人敏感信息系统需证明采取了充分保护措施密码明文显示违反最小化原则审计日志需要记录密码修改操作稳妥的密码流程
密码存储:
始终使用bcrypt等安全哈希算法每个密码独立盐值定期更新哈希策略传输安全:
强制HTTPS敏感字段二次加密(如使用RSA加密密码)前端职责:
实施基础输入验证安全错误提示(不泄露系统信息)防御XSS攻击(对输出内容编码)用户体验:
清晰的流程引导即时的反馈机制密码强度可视化提示
THE END