Files
juzi/docs/2026-10-11提交前Review.md
T

2.5 KiB
Raw Blame History

提交前 Review(2026-10-11)

范围:10.09 H5 UI、浏览器/微信身份、后端报告快照、部署说明;重点检查公网调试前的访问控制和回调路径。

已发现并修复

  1. P1:静态敏感路径可被重复/编码斜杠绕过。 原先先按原始路径检查 /data、/lib、/server.js,文件读取时才规范化;/%2fserver.js 实测返回 200。现统一斜杠并规范化后再授权,额外禁止访问 JUZI_DATA_ROOT。新增原始 HTTP 路径测试,覆盖双斜杠、编码斜杠、反斜杠和父目录段;修复后源码路径返回 404,数据目录返回拒绝响应。
  2. P2:nginx 后的用户共用登录限流。 原限流只看 TCP 对端,代理后全站共用回环地址的每分钟 60 次额度。新增显式 TRUST_LOOPBACK_PROXY=1,仅信任回环代理覆盖的合法 X-Real-IP;文档同步 nginx 配置。已测试不同 IP 额度独立,以及未启用信任时伪造请求头不能绕过限流。

验证

  • 评分模块自测:83 通过;真值回归:86 通过。
  • 账号/报告:权限隔离、最近 5 份、重启恢复、浏览器凭据恢复、会话退出、OAuth state 绑定和重放检查通过。
  • 完整检测 API→保存→回看:使用模拟上游,不调用收费 Face++;七张图片和话术刷新后完全一致。
  • UI 与三连拍:协议校验、登录回退、移动端布局、三视角流程、语音均通过。
  • wechat-browser.mjs:使用临时 HTTPS 证书和 /state/ 反代路径,验证前端微信按钮→模拟授权站点→服务端回调→Secure/HttpOnly/SameSite Cookie→首页/报告。两个独立浏览器上下文关联同一模拟 OpenID。此测试需要本地 OpenSSL 和 Playwright。

仍需公网/业务确认

  • 未使用真实微信 AppID/AppSecret 联调,公众号权限、网页授权域名及真实手机回调需在公网验收。
  • Node 管理接口仍依赖 nginx Basic Auth,公网只能反代访问,不能暴露 Node 端口。文件存储仅支持单进程。
  • 浏览器与微信账号不自动合并;先用本机身份产生的报告不会自动出现在微信账号中。
  • 已有协议是 Face++ 隐私政策,品牌方账号关联、报告保留/删除范围仍需业务确认;不应将当前版本视作已完成正式发布合规审核。

提交范围不含真实密钥、h5/data、PSD 原稿及 Windows Zone.Identifier 元数据。代码、运行素材、文案来源、测试和部署说明一起提交,便于服务器复现。