文章目录
-
-
- 系列文章
- 结论速览
- 初始错误假设
-
- 用户观察到的现象
- 第一轮的错误推断(已证伪)
- 目标站点与页面基本信息
-
- 离线素材中保存的本地文件(`化学品安全法规标准合规平台_files/`)
- 核心机制:两层服务端校验
-
- 时序图
- 两层校验的精确语义
- 白名单登记规则(实测)
- 验证实验全记录(A~N)
-
- 关键对照:Why \”Please login first\” ≠ \”Not Authorized\”
- 其他实测数据
- 关键技术细节
-
- `_passport` 令牌
- `callService` 协议
- `_command` 常量表(重点)
- 客户端加密工具(不是校验机制)
- `getErrorMsg` 中的 passport 抹除
- “查询”按钮的真实调用链
- 搜索接口的防护评估(无签名、参数可任意篡改)
-
- 结论
- 防护清单:有 / 没有
- 参数篡改实验(同会话,`Referer=SearchAllCustomer.jsp`,`_command` 保持搜索命令不变)
- 由此暴露的服务端分派内幕
- 两种“URL 编码”不要混淆
- 风险与合规说明
- 真实浏览器访问 Main.jsp 的完整请求清单
- 可复现脚本(curl)
-
- 完整示例:先登记目标页再调用(推荐)
- 最简示例:省略“登记页”,仅 2 条命令
- 抓取/对接实现建议
-
- 生命周期(伪代码)
- 注意事项
- 未解细节与后续验证方向
- 附录:关键数据速查表
-
- 会话与令牌样本(2026-09-16)
- `_passport` 样本
- cookie jar 形态(`curl -c` 保存结果)
- 首页附件下载 ID(抓包样本)
- 缓存逻辑
- 错误信息对照
- 检索响应样例(两组,均已实测)
-
摘要:本文是针对化学品安全法规标准合规平台会话授权(JSESSIONID 生效)机制的逆向分析报告,通过大量 curl 对照实验还原站点真实鉴权逻辑,破除 “点击查询后 JSESSIONID 生效由客户端 PoW/JS 挑战驱动” 的错误假设。 站点实际采用两层服务端校验机制:第一层为会话初始化校验,需完成Main.jsp→Check.jsp?_passport→Main.jsp302 握手流程完成会话初始化;第二层为页面作用域校验,服务端在 Session 内维护已访问页面集合,接口请求的Referer路径必须属于该集合才可放行,仅成功返回 HTTP200 的页面会被登记入白名单,JSESSIONID Cookie 本身不会发生变化,变化的是服务端 Session 内部状态。 平台统一接口callService.action中,_command为服务端预生成的静态密文常量,用于选定后端服务方法;业务参数置于_args,为明文 JSON 经过一次表单 URL 编码,接口不存在签名、时间戳、nonce、分页上限等防篡改校验,仅依靠会话与 Referer 白名单做访问控制。报告完整记录 A‑N 多组验证实验、请求样例、可直接运行的 curl 复现代码,给出会话生命周期伪代码、错误码处理逻辑、抓取对接实现建议,同时列出尚未完全确认的技术疑点供后续研究。 合规声明:本报告仅用于安全机制技术研究学习,请勿将分析结果用于高频、大规模批量爬取目标站点数据;使用相关接口需遵守目标网

