认证与会话
认证回答“你是谁”,会话回答“服务器如何持续记住你”。这两件事一旦薄弱,后面的权限控制都会变得不可靠。
关键概念
| 概念 | 说明 |
|---|---|
| 账号身份 | 用户名、手机号、邮箱、第三方登录身份 |
| 凭据 | 密码、验证码、MFA、OAuth 授权结果 |
| 会话 | Cookie、Session ID、JWT、访问令牌 |
| 生命周期 | 创建、刷新、失效、退出、设备管理 |
好的认证系统不只检查密码是否正确,还要考虑注册、登录、找回密码、修改密码、绑定手机、注销账号、多设备登录等完整链路。
常见问题
- 验证码无频率限制、可重复使用、绑定对象不严格。
- 找回密码 Token 不失效,或者能替换用户标识。
- 登录失败提示过细,帮助枚举账号是否存在。
- Session 退出后仍可使用,密码修改后旧设备仍在线。
- JWT 密钥弱、过期时间过长,或服务端不校验签名和算法。
- Cookie 缺少
HttpOnly、Secure、SameSite等安全属性。
防护要点
认证流程要把“凭据正确、对象正确、时效正确、次数合理”同时满足。会话令牌应随机、不可预测、可失效,敏感操作要二次确认,并保留登录历史、异常地理位置、设备变更等审计线索。