docs: record phase 1/3/4 fix rechecks in progress log

补齐独立复核留痕,与「审核轮」对称:
- T-505 复核(达标;生产静态 serving 缺口已登记 T-403)
- T-105 复核(补录,达标;extra_body 过度加严登记备忘)
- T-306 复核(补录,达标超预期;DNS rebinding→Backlog、限流缓存→T-403)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
QiuSW
2026-07-03 16:06:34 +08:00
co-authored by Claude Opus 4.8
parent ebb4782bb2
commit 547196f39a
+20
View File
@@ -871,3 +871,23 @@
- 阻塞:T-505 功能无阻塞;完整大套件单次全绿仍受远程 MySQL 连接稳定性影响。
- 决策:T-505 仅处理审核报告 P2;P3 不在本轮实现,已登记到 T-403 或 Backlog。
- 下一步:领取 T-401 运营后台完善。
## 2026-07-03 T-505 复核(Claude Code review,非任务)
- 状态:DONE(复核完成,结论:达标)
- 对象:codex 按 `docs/phase-4-review.md` 完成的 T-505 修复。
- 结论:**达标**。P2-1 去 CDN:Bootstrap/qrcode 已自托管到 `apps/portal/static/portal/vendor/` + `{% static %}`,无 jsdelivr 残留、`findstatic` 通过(开发环境层面达标)。P2-2 分页:`paginate_records` 返回 paginator/page_obj/is_paginated/records_total_count/records_page_size 全套,模板正确渲染总数与翻页;测试造 55 条验第 1/2 页且跨页仍不泄露他人订单(越权防护在分页下依然成立)。P3 已登记 T-403/Backlog。
- 复核发现的补充(非 T-505 失败,属部署衔接):自托管只做了 app 层,`settings` 仅有 `STATIC_URL`、无 `STATIC_ROOT`/collectstatic/WhiteNoise,`DEBUG=False` 生产下 Django 不发静态文件→CSS 错版、二维码 404。**已把「生产静态文件 serving」登记到 T-403 验收要点**(与邮件后端、限流共享缓存并列)。
- 验证依据:静态审查 portal views/templates/tests + settings;codex 记录 portal 21 tests OK、分页 2 tests OK;完整套件仍受远程 MySQL 间歇断连影响(非断言失败)。
## 2026-07-03 T-105 复核(Claude Code review,非任务|补录)
- 说明:本条为补录——T-105 复核实际发生在 2026-07-02,当时只在对话中给出结论、未落 progress.md,现补齐以与「审核轮」对称。
- 结论:**达标**。P1-1 `parameters`/`extra_body` 白名单化落地,核心/计费字段(model/messages/stream/n/size)不可被覆盖,两条越权拦截专测(chat + images_edits)断言 model 不变、n 丢弃、temperature 生效。P2 全处理:`resolution_to_size` 大小写归一、`.env.example` 死配置 `AI_DEFAULT_*` 删除、默认别名对齐 `image-hd`。T-104 结论改写为「图片同步风险未退」并挂 T-302/T-403,smoke 增 `image`。
- 复核发现的残留(登记,非阻塞):codex 把可信的 `extra_body` 也锁进了与不可信 `parameters` 同一张白名单——偏安全(fail-closed)但偏离原设计的「extra_body 保留覆盖能力」,将来接需要特殊 body 字段的供应商需改代码。属方向正确的加严,登记备忘。
## 2026-07-03 T-306 复核(Claude Code review,非任务|补录)
- 说明:本条为补录——T-306 复核实际发生在 2026-07-03 稍早,当时只在对话中给出结论、未落 progress.md,现补齐。
- 结论:**达标,且实现超出文档要求**。P1-1 SSRF:协议白名单 + `getaddrinfo` 解析后逐 IP 校验(not_global/private/loopback/link_local/reserved/multicast/unspecified)+ 处理 IPv6 映射 IPv4(`::ffff:169.254.169.254`)+ 重定向手动逐跳 re-validate(堵 30x 绕过)+ Content-Length 与流式双重大小上限;测试覆盖回环/云元数据/重定向内网/超大响应均「拒绝且不扣点」。P2-1 全局 `REST_FRAMEWORK` 默认空认证、P2-2 生成/认证限流、P2-3 充值金额上限均落地含测试。
- 复核发现的残留(已登记):① DNS rebinding TOCTOU(校验解析与 requests 各解析一次,未钉 IP)→ 已登记 Backlog;② DRF 限流依赖共享缓存,多 worker 下 LocMemCache 每进程失效 → 已登记 T-403。