Session ID 会话 ID
在用户访问系统时标识其身份和设备的唯一 token。是 session 机制的核心 —— 服务器内存里存着 SID → 用户信息 的映射,看到这个 ID 就知道”这是谁”。
长啥样
通常是一串随机字符:
SESSIONID=8f3d2a9c1b4e7f0a6d5c3b8e2f1a9d4c
必须满足三个特性:
| 特性 | 不满足会怎样 |
|---|---|
| 足够长 | 可被暴力枚举 |
| 足够随机(密码学级 RNG) | 可预测,攻击者算出来 |
| 唯一 | 撞 ID = 串号 |
怎么传输
最常见:Session Cookie —— 浏览器自动带。 其他方式:
- URL 参数(
?sid=abc)—— 不推荐,日志泄露 - Authorization Header —— API 常用
- LocalStorage —— JS 能读,XSS 风险高
Session ID 的生命周期管理
- 创建 —— 用密码学级 RNG 生成
- 登录后必须重新生成 —— 防 session fixation
- 过期 —— 服务器端有过期时间,即使 ID 还在浏览器也无效
- 登出 —— 服务器端立即销毁,不只是删客户端 cookie
跟 Session Hijacking 的关系
Session Hijacking 的目标就是偷这个 ID。一旦泄露,攻击者:
- 不用密码
- 绕过 MFA
- 直接以你身份操作
所以保护 Session ID 等同于保护账户本身。