WSTG 实战|会话管理测试(4.6 / SESS)
登录后靠”会话”维持身份,会话一旦被预测或劫持,登录再强也没用。WSTG 4.6 v5.0 扩展到 11 个子项,新增 JWT 测试、并发会话测试。
① 是什么
会话管理测试 验证从登录签发、持续维持到销毁的全过程是否安全:令牌是否随机、Cookie 是否严谨、能否被固定/劫持、登出与超时是否可靠、JWT 是否安全、并发会话是否受控。
WSTG 类别码:SESS
② 为什么重要
- 会话令牌可预测 = 攻击者可”算”出别人会话直接登录。
- 无 HttpOnly/Secure、会话不刷新、登出不失效、JWT 签名弱、并发会话无限制,都是被劫持的高危点。
③ 核心概念拆解(对应 4.6.x / WSTG-SESS-01 到 -11)
| ID | 测试项 | 关键点 |
|---|---|---|
| 4.6.1 / WSTG-SESS-01 | 测试会话管理模式 | 令牌生成算法(CSPRNG)、熵、不可预测、绑定 IP/UA/设备指纹、会话 ID 与认证分离 |
| 4.6.2 / WSTG-SESS-02 | 测试 Cookie 属性 | HttpOnly、Secure、SameSite=Strict/Lax、Path/Domain 最小化、__Host-/__Secure- 前缀 |
| 4.6.3 / WSTG-SESS-03 | 测试会话固定 | 登录前/后 Session ID 是否变化、是否接受外部 Session ID、会话迁移策略 |
| 4.6.4 / WSTG-SESS-04 | 测试暴露的会话变量 | 令牌是否出现在 URL/Referer/日志/错误页/客户端存储、日志脱敏 |
| 4.6.5 / WSTG-SESS-05 | 测试跨站请求伪造 (CSRF) | 同步 Token 模式、双重提交 Cookie、SameSite 替代、CORS 预检、GraphQL/WS CSRF |
| 4.6.6 / WSTG-SESS-06 | 测试登出功能 | 服务端销毁、客户端清理、单点登出、所有标签页失效、撤销刷新令牌 |
| 4.6.7 / WSTG-SESS-07 | 测试会话超时 | 空闲/绝对超时、超前告警、超时后自动登出、刷新令牌滑动窗口、长会话风险 |
| 4.6.8 / WSTG-SESS-08 | 测试会话困惑 | 多应用共享 Session、子域 Session 泄露、反向代理传递 Session、跨租户隔离 |
| 4.6.9 / WSTG-SESS-09 | 测试会话劫持 | 网络嗅探、中间人、XSS 窃取、会话侧信道、会话预测、并发会话检测 |
| 4.6.10 / WSTG-SESS-10 | 测试 JSON Web Tokens (JWT) | 算法混淆、None 算法、弱密钥、过期/颁发者/受众验证、声明注入、JWKS 注入 |
| 4.6.11 / WSTG-SESS-11 | 测试并发会话 | 单用户并发限制、设备管理、异地登录告警、强制下线、会话列表可见性 |
④ 常见误区
- 误区 1:令牌长=随机。自增/时间戳虽长但可预测。
- 误区 2:有 HTTPS 就够。HttpOnly/SameSite 仍关键。
- 误区 3:登出按钮点了就安全。要确认服务端会话真正失效。
- 误区 4:JWT 无状态就不用管。签名算法、密钥管理、声明验证、撤销机制同样关键。
⑤ 一句话小结
会话测试覆盖”签发→维持→销毁”:令牌随机性、Cookie 属性、固定/暴露/CSRF、登出与超时、JWT、并发会话——任何断点都能被劫持。
下一篇:输入校验测试(4.7 / INPV)
参考来源:OWASP Web Security Testing Guide(最新 v5.0 / 2026 开发线)(本文为原创讲解,非转载原文)