Simon
|
5f439e8384
|
kanban: v1.9.8-DRAFT 补加事故备注 + HTML 重建
|
2026-08-13 09:26:42 +08:00 |
|
Simon
|
c9c70422f6
|
kanban: v1.9.8 巡检同步 (2026-08-13)
|
2026-08-13 09:20:32 +08:00 |
|
Simon
|
0042519f66
|
fix(security): P0-NEW12 调试端点代码层根因(debug.py 集中 + app_env 优先)
【触发】
2026-08-12 09:00 早班巡检:jumpserver-V2 容器内 `python urllib` 绕开 nginx 直测
FastAPI(backend:8000):
- /test-ping 200 pong
- /test-error 200 "服务器内部错误"
- /version 200 1.1.0(含 git hash)
- /openapi.json 404(P0-NEW11 已闭环)
真实风险:公网 404 全部依赖 nginx 边缘层兜底;若 nginx 配置被误改 /
失效 / 容器间网络可达 backend:8000,攻击者可拿到 3 个调试端点。
【修复(v1.0 + v1.1 二次修复)】
1. 新建 src/backend/app/api/debug.py 集中 3 个调试端点(/api/debug/ping
/error /version),加双重门控:
- 模块级:main.py `if _is_dev_mode():` 块内 include_router(debug_router)
- 端点级:每个端点内部 _is_dev_mode() 二次校验(防 fail-open)
2. 删除 main.py 散落的 /test-ping /test-error /version
3. debug.py 的 _is_dev_mode() 委托 main.py:48 单一真源(避免三处定义漂移)
4. 【v1.1 二次修复】_is_dev_mode() / _dev_mode_enabled() 改为 app_env 优先:
- 优先级 1: app_env=="production" → 永远 False(即使 DEV_MODE=true)
- 优先级 2: 非 production → 看 DEV_MODE / settings.dev_mode
同步修复 main.py + dev_auth.py(两个独立实现不能漏一处)
5. tests/conftest.py enable_dev_mode fixture 同步设 APP_ENV=development
(避免 dev 测试 case 因 app_env 默认 production 而 fail)
【验证(公网 + 容器内)】
- 公网 12 端点:3 旧端点 404 + 3 新端点 404 + 3 dev 403(nginx IP 白名单)+
1 health 200 + 3 P0-NEW11 404 ✅
- 容器内直连 backend:8000 6 端点:100% 4xx ✅(用户原话真实风险场景)
- 回归测试 10 passed + 1 skipped(psutil 缺包)
【部署】
jumpserver-V2 PSFTP + sudo cp + chown admin:admin + 清理 __pycache__ +
docker restart wecom_it_backend
v1 部署:10:48
v2 部署:10:55(app_env 优先修复后)
【关联】
- 缺陷单:docs/03-测试文档/05-缺陷单/BUG-安全-005-调试端点无门控-001.md
- 看板:项目状态看板 v1.9.7-DRAFT P0-NEW12 ✅ 已修复
- 工作日志:.workbuddy/memory/2026-08-12.md
- MEMORY 铁律:.workbuddy/memory/MEMORY.md「调试端点铁律」5 条
|
2026-08-12 11:01:14 +08:00 |
|
Simon
|
6be361fb63
|
kanban: v1.9.4 巡检同步 (2026-08-11)
|
2026-08-11 09:27:12 +08:00 |
|
Simon
|
b4e21e3150
|
kanban: v1.9.3 巡检同步 (2026-08-10)
主要变更:
- P0-1 /itportal/ 500 修复闭环:nginx.conf line 139-142 08-03 fix 已生效,公网实测 500→404,迁移至已完成
- P0-NEW10: 后端 debug 端点全清单治理(test-ping/test-error/health/ready/metrics/version/openapi.json)生产暴露
- P1 治理-2/3: 看板-滴答双向同步铁律升级(dida→看板反向同步纳入巡检必做)
- P1-Alembic / P1-Idx: dida→看板反向脱节补登(Alembic 053-057 迁移 + troubleshooting 索引)
- console.{log,debug,info} 残留 128→129(h5 101 / agent 20 / admin 0 / terminal 8)
- BLK-A/B 26→30 天阈值校正
- dida 同步 close: 6a6bfc2be (sensitive_words 13 端点补 auth), create: 6a7928a2 (P0-NEW10)
|
2026-08-10 09:26:41 +08:00 |
|
Simon
|
facc04aa65
|
chore: docs 结构整改 + compose 双目录对齐(合并重建提交)
本提交为 .git 对象库损坏后的重建提交,内容等价于原先三个本地提交
(5e2fd4c2 / 57a53c98 / 5d7e1873)的累积结果,未做任何额外改动。
一、docs 结构整改(整改 #14)
根因:重构时新结构为 untracked 文件,执行 git stash(未带 -u)未纳入,
随后 git reset 拉回 HEAD 旧 tracked 树,导致旧树复活、新旧两棵目录
树并存于 docs/,共 791 文件、双分类体系冲突。
修复动作:
- b2 同名异主题文件改名迁移保全 9 个
- C 类 39 个孤立文件按主题正确归类
- A/B1 类 222 个重复文件删除(新结构已有内容副本)
- 9 个旧独有空目录删除
- 270 处内部引用按 verified 映射改写
- 整改记录 #14 登记于 04-运维文档/部署运维
结果:docs 791 → 569 文件,顶层仅规范 8 类 + 治理文件,单树恢复。
残留:约 20 处指向从未存在文件的陈旧死链,归入独立文档卫生任务。
二、compose 双目录对齐(消除踩坑 A)
- docker-compose.yml:nginx 前端挂载全部由根目录 frontend-*/dist
改为 src/frontend-*/dist(h5 / agent / admin / terminal)
- docker-compose.dev.yml:dev 服务 build context 与卷同步改 src/
- 效果:本地 docker compose up 不再把根目录 stale dist 挂回,
与线上一致,分叉隐患消除(已 docker compose config 校验通过)
防复发铁律:
- 重构须提交;仓库修复须 git stash -u 或先 commit
- 新结构须 git add 并提交,避免再次 untracked 复活
- H5 改动只动 src/frontend-h5/,禁改根目录遗留 frontend-*/
|
2026-08-07 22:31:32 +08:00 |
|