docs: record case-insensitive URL privacy and fixed deployment evidence

This commit is contained in:
2026-10-10 05:55:38 +08:00
parent cd3fe5d00a
commit 113eaec32f
3 changed files with 17 additions and 3 deletions
@@ -1,10 +1,22 @@
# Dispatcher / Agent Logrus Debug 实现与固定环境部署
## 最终已安装版本:1202b9a(2026-10-10 05:27 CST 现场)
## 最终已安装版本:cd3fe5d(2026-10-10 05:51 CST 现场)
第十次审查的大写HTTPS签名URL已根因修复:共享 `urlInText` 按URL标准忽略scheme大小写,不做示例签名字段或固定主机特判。HTTP/HTTPS/WS/WSS大小写混合均进入既有URL解析与query/userinfo/fragment隐藏;无认证/query/fragment的普通URL保留原值。
新 `TestURLSchemeCaseCannotExposeSignedPartsOnAnyLoggingPath` 十二scheme大小写写法×两模式×text/JSON,通过实际HTTP request/response观察器和error/detail/message验证完整签名与query排除、真实失败原因/安全路径/task_id/status保留、无认证/query/fragment的普通URL原值保留,服务器收到与客户端读到原始bytes相等。先失败复现再实现通过;前九轮表单/引号标签/嵌入JSON诊断/持续归属/大正文不截断/认证PEM等回归全部保持。
最终源码 `cd3fe5d00a8fed5b4b7d14976ef3ee7751deb7d0` 已推送核对main,从干净固定提交构建安装。最终make check/release-check-local(格式/当前合同Proto/vet/全包race/build/实际隔离RabbitMQ HTTPS mTLS及现有验收对照)、Python21通过,业务覆盖率 **72.2%**;记录 `.local/urlcase-final-check.log`、`.local/urlcase-coverage.log`、`.local/urlcase-release-check.log`。
2026-10-10 05:51 CST实际现场:Agent `2903856`/Dispatcher `2903867` 两实际SHA256 `971a5f674ad1d75a08f6023ce962f181212e34913b2d0ac1d8f250d138c6b0b8`,enabled+active/running、0重启、实际Debug无Capture;Asterisk `777461` 不变,通道/tcpdump0。严格登记SSH指纹,关D新准入并只读排除活动/未知执行/恢复阻断才部署;无reset/迁移/Asterisk重启/抓包/独立拨号/主动投递/额外AI OSS。
实际14HTTP请求响应200、两端各8DebugRPC正文、仅LogrusJSON、0error/redaction_error/已观测敏感字段签名URL泄漏、13隐藏标记。现场URL检查也明确忽略scheme大小写。现场无新增signed URL/form/非JSON正文/MQ业务/呼叫/真实恢复故障,新URL反例仅本地实际HTTP断言,不代签这些或业务/生产;独立probe仍saas_pending/business_ready=false。私密摘要本机 `.local/logging-deployment/urlcase-{preflight,deploy,field-summary}.json`(文件0600目录0700)。源码/最终证据权威仍干净隔离main `.local/logging-isolated`,根并行修改保留;以下旧版只历史。
## 上一版部署记录:1202b9a(2026-10-10 05:27 CST 历史)
第九次审查的合法单字段URL编码表单泄漏已根因修复:`redactForm` 不再要求 `&`,一对与多对字段使用同一标准百分号解码和敏感分类,并接入共享 `cleanString` 覆盖普通/Debug error/detail,不仅HTTP正文。裸flag是合法空值字段;逐key/value解码失败明确以 INVALID_FORM 标记隐藏该字段,不回退整个原始表单、不撤销此前脱敏,其余真实诊断字段继续保留。只处理日志副本,传输字节不改。
新 `TestPercentEncodedSingleAndMixedFormsKeepWireBytesAndHideSecrets` 七种单字段token/messages、多字段、坏key、坏value、bare flag、坏字段在敏感字段之前/之后形态×两模式,通过真实HTTP请求/响应观察器与error/detail验证秘密排除、task_id/status保留及INVALID_FORM可见,实际服务器收到和客户端读到的原始bytes完全相等。先运行失败复现,再实现通过;此前全部JSON相邻诊断、quoted标签/Unicode名字、持续归属、字段分类、>150KB不截断与认证/PEM等回归保持。
新 `TestPercentEncodedSingleAndMixedFormsKeepWireBytesAndHideSecrets` 七种单字段token/messages、多字段、坏key、坏value、bare flag、坏字段自身携带敏感值形态×两模式,通过真实HTTP请求/响应观察器与error/detail验证秘密排除、task_id/status保留及INVALID_FORM可见,实际服务器收到和客户端读到的原始bytes完全相等。先运行失败复现,再实现通过;此前全部JSON相邻诊断、quoted标签/Unicode名字、持续归属、字段分类、>150KB不截断与认证/PEM等回归保持。
最终源码 `1202b9acc96e31d0dc2bd0a7e80e22e0de8f5ea6` 已推送核对main,从干净固定提交构建安装。最终make check/release-check-local(格式/合同Proto/vet/全包race/build/实际隔离RabbitMQ HTTPS mTLS及现有验收对照)、Python21通过,业务覆盖率 **72.2%**;记录 `.local/form-final-check.log`、`.local/form-coverage.log`、`.local/form-release-check.log`。
+1 -1
View File
@@ -15,7 +15,7 @@ Agent 的抓包开关独立为 `--capture`:只在显式开启时要求 `AGENT_
## 记录内容
- HTTP:请求开始、实际被读取的可读请求/响应正文(JSON、text/*、XML、form)、响应状态、正文读取结果。认证头不记录;URL 的认证、查询和 fragment 部分删除。SDK/native ARI 的 HTTP 客户端使用同一观察输出,保留 TLS、超时、重定向和 WebSocket 升级行为。
- HTTP:请求开始、实际被读取的可读请求/响应正文(JSON、text/*、XML、form)、响应状态、正文读取结果。认证头不记录;URL 的认证、查询和 fragment 部分删除。HTTP/HTTPS/WS/WSS scheme 按标准忽略大小写;自由文本和 JSON 字符串中的无认证/query/fragment普通URL原值保留。SDK/native ARI 的 HTTP 客户端使用同一观察输出,保留 TLS、超时、重定向和 WebSocket 升级行为。
- MQ:实际入站/出站字节;接收、校验、处理、ACK/NACK/Reject、发布及 broker confirm。`publisher_confirmed` 只证明 RabbitMQ 确认,记录 `saas_processed=false`,不能据此声称 SaaS 已处理。
- RPC:实际边界的 protobuf 请求/响应投影,明确 `wire_encoding=protobuf`。冻结配置中的 `*_json` 字节展开为 JSON,其余字节仅记录长度;不是业务内部 CallSpec,也不声称 JSON 是 protobuf 原始线格式。客户端响应收到和服务端响应准备完成分别记录,服务端返回不能冒充对端收讫。
- 业务流程:持久接纳/重复忽略、号码拒绝、未来 issued_at/容量/准入等待、选线、预占及拨号前取消、请求执行、交付未知保留占用、Agent 排程/执行/结束、结果回报及恢复。拒绝和等待不是无日志的返回;节点失败记录具体原因,而不是只有错误类型。