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