Files
Nexus/docs/changelog/fix-plan-2026-05-20.md
2026-07-08 22:31:31 +08:00

6.0 KiB
Raw Permalink Blame History

Nexus 代码问题修复计划

提交部门: 管理组 部门负责人: 项目经理 报告日期: 2026-05-20 状态: 待审查


1. 问题总览与优先级

优先级 数量 说明
P0 — 已登记待改 3 项 原代码审查遗留,project/status.md 已标记
P1 — 安全中危 5 项 新发现的安全问题,涉及密钥/注入/泄露
P2 — 代码质量 5 项 硬编码、日志规范、路径兼容性等

2. 人员分工与技能安排

2.1 工程部 — 代码修复执行

人员/技能 分配任务 预估工时
PHP 开发者 api_proxy.php 冗余认证注释清理
files.php fm.uploadRaw 死代码删除
install.php SQL注入防护
1.5h
Python 开发者 health_checker.py+ssh_direct.py 批量 COMMIT 重构
retry_engine*.py 三合一清理(确定在用版本,删除死代码)
config.py 默认密钥加固
2h
安全工程师 db.php:48 密码返回脱敏方案设计
⑧ 全库 @ 抑制符/空catch审计整改
1h
Senior Developer tinyfm.php 解压异常 $res=true 修复
⑩ 代码审查 + PR 质量把关
1h

2.2 测试部 — 修复验证

人员/技能 分配任务 预估工时
Verify 验证每个修复是否到位,逐项确认关闭 1h
安全测试 回归验证安全类修复(6a/6e/6g/6i 0.5h
测试结果分析师 输出最终验证报告 0.5h
现实检验者 检查实际运行效果,确认无回归 0.5h

2.3 管理组 — 决策与监督

人员/技能 职责
项目经理 审批计划、验收决策、资源协调
测试部(整体) 修复完成后执行回归测试,出具测试报告

3. 详细修复方案

P0 — 已登记待改(3项)

#2 api_proxy.php:22-27 冗余认证

  • 现状: require auth.php 已做认证,6行后又重复检查 $_SESSION['logged_in']
  • 修复方案: 添加注释说明"auth.php 已处理认证,此处为二次校验防止配置遗漏" 或 删除冗余代码
  • 负责: PHP 开发者
  • 预估: 15min

#3 files.php:208 fm.uploadRaw 死代码

  • 现状: 函数定义后全库零调用
  • 修复方案: 删除第208-210行
  • 负责: PHP 开发者
  • 预估: 5min

#6 health_checker.py+ssh_direct.py 逐COMMIT

  • 现状: 每服务器操作后单独 db.commit()
  • 修复方案: 收集多个更新后统一 COMMIT,减少 DB I/O
  • 负责: Python 开发者
  • 预估: 30min

P1 — 安全中危(5项)

6a config.py:12 默认密钥

  • 现状: SECRET_KEY = "change-me-in-production-use-openssl-rand-hex-32"
  • 修复方案: 启动时检测默认值则报错退出,强制用户通过环境变量设置
  • 负责: Python 开发者
  • 预估: 20min

6c retry_engine*.py 三份重复代码

  • 现状: 3个文件几乎相同,retry_engine_fix.py 有语法错误(多行字符串未连接)
  • 修复方案: 确定在用版本,删除死文件,提取公共逻辑
  • 负责: Python 开发者
  • 预估: 30min

6e install.php:56-57 SQL注入

  • 现状: $_POST['db_name'] 直接拼入 SQL
  • 修复方案: 参数化查询或严格正则过滤 $dbName(仅允许字母数字下划线)
  • 负责: PHP 开发者
  • 预估: 15min

6g tinyfm.php:1208-1209 静默失败

  • 现状: 解压异常时 $res = true(把失败当成功)
  • 修复方案: 改为 $res = false + 记录错误信息
  • 负责: Senior Developer
  • 预估: 10min

6i db.php:48 密码泄露

  • 现状: getServers() 返回解密后的 SSH 密码
  • 修复方案: 新增 getServersSafe() 方法脱敏密码字段,审计调用方按需切换
  • 负责: 安全工程师 + PHP 开发者
  • 预估: 30min

P2 — 代码质量(5项)

# 问题 修复方案 负责 预估
6b agent_installer.py 硬编码URL 提取为配置项 Python 开发者 15min
6d print()logging 替换为 logging 模块 Python 开发者 20min
6f @ 抑制符/空catch 添加错误日志记录 安全工程师 30min
6h safePath() 硬编码路径 提取为配置项或动态获取 PHP 开发者 15min
6j Redis 硬编码连接 使用配置项兜底 Python 开发者 10min

4. 执行时间线

Phase 1 — P0 修复(~1h
  ├─ #3 files.php uploadRaw 删除 (5min)
  ├─ #2 api_proxy.php 冗余认证 (15min)
  └─ #6 批量 COMMIT 重构 (30min)

Phase 2 — P1 安全修复(~1.5h
  ├─ 6e install.php SQL注入 (15min)
  ├─ 6g tinyfm.php 静默失败 (10min)
  ├─ 6a config.py 密钥加固 (20min)
  ├─ 6c retry_engine 三合一 (30min)
  └─ 6i db.php 密码脱敏 (30min)

Phase 3 — P2 质量修复(~1.5h
  ├─ 6b/6d/6j Python端清理 (45min)
  ├─ 6f 错误处理审计 (30min)
  └─ 6h safePath路径提取 (15min)

Phase 4 — 测试验证(~2h)
  ├─ 回归测试 + 安全测试
  ├─ 实际运行验证
  └─ 测试报告输出

5. 风险与注意事项

风险 影响 缓解措施
retry_engine* 三合一可能误删在用文件 重试队列异常 先确认 main.py 中 import 路径,保留被引用的版本
db.php:48 密码脱敏可能影响调用方 部分功能密码读取失败 逐个审计调用方:deploy.phpapi_proxy.php
safePath() 路径修改可能影响现有部署 文件路径解析异常 增加兼容处理,旧路径格式仍可识别

6. 审批

角色 意见 签名 日期
项目经理 待审批

下一步: 请项目经理审查本计划,批准后按 Phase 1→4 顺序执行。