PHP 会话与 Cookie 安全审计(php-session-cookie-audit)用于分析 PHP 项目源码中认证会话相关的安全设置与实现逻辑。
一、用途 该工具面向 PHP Web 源码的会话与 Cookie 安全审计,重点检测以下问题:
- session fixation
- cookie flags 缺失(HttpOnly/Secure/SameSite)
- JWT 校验缺陷(签名算法混淆、未校验 exp/iss/aud、弱密钥)
- remember-me/持久登录弱点(若存在)
二、分级与编号 分级与编号详见 shared/SEVERITY_RATING.md。漏洞编号格式为:{C/H/M/L}-SESS-{序号}。
三、必检内容(强制)
- Session 初始化:是否在登录后 session_regenerate_id;是否设置合理的超时、cookie 参数。
- Cookie flags:HttpOnly、Secure、SameSite 是否明确设置。
- JWT:decode/verify 使用的算法是否固定;是否验证 exp/nbf/iss/aud;secret/公钥是否硬编码或读取不安全。
- 退出/失效:logout 是否真正清除 session 与 token。
四、PoC 要求(强制)
- 对 session fixation:给出请求序列(登录前固定 session id -> 登录后验证会话变化)。
- 对 cookie flags:说明浏览器侧可见差异与危害,并给出示例 HTTP 响应头。
- 对 JWT:给出“签名算法/claim 校验缺失”的请求 PoC 框架,必须说明 payload 如何构造。
五、证据引用(强制:来自 php-route-tracer) 每条会话与 Cookie 安全疑似风险必须逐项引用 trace 输出中 ## 9) Sink Evidence Type Checklist 的 SESS 行对应证据要点(允许状态为待验证,但证据引用必须存在):
- EVID_SESS_SESSION_INIT_REGEN:登录后是否 session_regenerate_id 等会话固定防护证据
- EVID_SESS_COOKIE_FLAGS:Cookie flags(HttpOnly/Secure/SameSite)设置证据
- EVID_SESS_JWT_VERIFY_CLAIMS:JWT 签名算法固定与 exp/nbf/iss/aud 等 claim 校验证据
- EVID_SESS_LOGOUT_CLEAR:logout 是否真正清除 session 与 token 的证据
六、tracer 证据缺失处理(强制) 若 trace 契约校验失败或缺失上述 1~4 任一关键证据点,该风险只能标记为 ⚠️待验证,不得给出“已确认可利用”的断言。
七、报告输出 输出路径为 {output_path}/vuln_audit/sess_{timestamp}.md。
八、条目模板(强制) 必须包含:位置证据 + 数据流链(token/session -> 校验 -> 授权)+ 可利用前置条件 + PoC + 修复建议 + rg 搜索语句。