会话管理安全是什么
HTTP 本身无状态,登录态靠会话维持,因此会话标识的实际作用等同于临时凭据。安全会话管理覆盖五个环节:生成(足够随机、不可预测)、传输(仅走 HTTPS,Cookie 带 Secure)、存储(服务端保存状态,前端仅持有标识且带 HttpOnly)、失效(超时与注销时服务端真正删除)、监控(异常会话检测与用户可见的登录设备列表)。任一环节薄弱,其他环节的加固都会被拉低。
基本信息
| 标识生成 | 必须使用密码学安全随机源,禁止自增或时间戳形式 |
|---|---|
| 传输要求 | 仅 HTTPS,Cookie 带 Secure 与 HttpOnly |
| 失效设计 | 空闲超时 + 硬性超时 + 注销即时失效 |
| 轮换时机 | 登录成功后重新生成会话标识,防会话固定 |
典型使用场景
- 登录功能上线前核对会话标识是否随机生成、登录后是否轮换
- 为高权限后台设置更短的空闲超时与硬性超时
- 提供会话列表与远程下线能力,用户可自查异常登录
- 排查会话相关问题:确认注销是否在服务端删除了会话记录
- 多系统单点登录场景统一会话策略,避免各子系统标准不一
会话 Cookie 属性组合
会话 Cookie 属性组合
# 会话标识 Cookie 的推荐属性组合
Set-Cookie: sess=<强随机值>; Path=/; Secure; HttpOnly; SameSite=Lax
# Secure 仅通过 HTTPS 传输,防明文链路窃听
# HttpOnly 阻止脚本读取,降低 XSS 直接窃取会话的风险
# SameSite 缓解跨站请求携带 Cookie
# 核查线上实际下发:curl -sI https://example.com/login | grep -i set-cookie失效与轮换设计
失效与轮换设计
空闲超时:如 30 分钟无操作即失效
硬性超时:如登录后 8 小时必须重新认证
注销:服务端删除会话记录,而不是只清浏览器 Cookie
轮换:登录成功后重新生成会话标识,防会话固定
监控:异地登录提醒、会话列表、异常并发会话告警会话标识的生成质量比长度更关键:使用密码学安全随机源即使长度适中也能抵抗猜测,自增编号即使很长也可被枚举。
注销只清浏览器 Cookie 不清服务端会话:已经泄露的会话标识在超时之前仍然可以继续使用。