Web会话ID管理与分析全解析
服务器生成的会话ID
现代Web服务器具备生成自身会话ID的能力,这些ID通常是较大的(32位)随机数。虽然这能避免许多类型的攻击,但它们都容易受到会话重放攻击。以下是一些常见服务器及其对应的会话跟踪变量:
| 应用服务器 | 会话ID变量 |
| — | — |
| IIS | ASPSESSIONID |
| Tomcat (Servlet/JSP引擎) | JSESSIONID |
| PHP | PHPSESSID |
| Apache | SESSIONID |
| ColdFusion | CFID, CFTOKEN |
| 其他 | JServSessionID, JWSESSIONID, SESSID, SESSION, SID, session_id |
会话数据库
大量依赖数据库的应用程序可以选择在服务器端几乎完全跟踪会话。会话数据库是一种在多个Web服务器之间安全管理会话的极其有效的技术。服务器仍然会生成一个唯一的数字并将其传递给客户端,但不会有额外的信息离开服务器。
-工作流程:
1. 用户首次登录应用程序时,应用程序生成一个临时会话ID,并将其存储在会话表中。
2. 所有状态信息与会话ID存储在同一行。
3. 用户每次请求新页面时,应用程序获取会话令牌并在会话表中查找该值。
4. 只要会话ID有效,应用程序就会从会话表的行中获取当前状态信息。
graph LR A[用户登