council(draft): SecurityEngineer - create plan.md with security risk assessment

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat/task1-c-wallet
Council 2026-04-15 12:21:29 +08:00
parent 4747d92068
commit a6c3c87ea9
1 changed files with 118 additions and 0 deletions

118
plan.md Normal file
View File

@ -0,0 +1,118 @@
# Council Plan — SecurityEngineer Round 1
## 角色职责
SecurityEngineer — 负责安全风险评估,尤其关注 debug 代码注入、日志文件写入权限、config 泄露等风险点。
## 当前状态
### Git 状态(已确认)
- Worktree 分支:`council/SecurityEngineer`HEAD = `4747d92`
- **Git status 已确认干净**:所有 modified 文件Common.php, Plugins.php, common.php, AdminPowerService.php, PluginsService.php, shopxo.php, core.php均已通过 `git checkout HEAD --` 恢复至 HEAD 状态
- 仅 `.claude/` 目录为 untracked框架自身目录
- `admin.php` / `public/admin.php` 已恢复
- `adminwatekc.php`, `debug_power.php`, `test_admin.php`, `public/adminwatekc.php`, `public/test_admin.php` 已不存在(已清理)
- `app/plugins/vr_ticket/` 不存在于 worktree 中untracked未被追踪
### 当前文件安全状态
| 文件 | 风险点 | 当前状态 |
|------|--------|----------|
| `app/common.php` | `is_develop: true` / debug 日志 | ✅ 已恢复,`is_develop: false` |
| `app/admin/controller/Plugins.php` | 权限检查逻辑被修改 | ✅ 已恢复 |
| `config/shopxo.php` | `is_develop: false` | ✅ 已恢复 |
| `public/core.php` | 未知修改 | ✅ 已恢复 |
| `app/service/AdminPowerService.php` | 未知修改 | ✅ 已恢复 |
| `app/service/PluginsService.php` | 未知修改 | ✅ 已恢复 |
| `adminwatekc.php` 等调试脚本 | 潜在后台入口暴露 | ✅ 已删除 |
| `app/plugins/vr_ticket/` | untracked 插件目录 | ⚠️ 未存在于 worktree需从 Docker volume 重新获取) |
---
## SecurityEngineer 评估
### Plan A — Git 清理(推荐)
```
git checkout HEAD -- [files]
```
**优势:**
- 原子性恢复,无残留风险
- `is_develop: false` 恢复生产配置
- 权限检查逻辑恢复原始状态
- 调试文件(`adminwatekc.php` 等)已确认不存在
**安全确认(基于当前 git status**
1. ✅ `is_develop: false` — 不泄露 stack trace / 配置信息
2. ✅ 无 `file_put_contents('/tmp/...')` debug 日志残留
3. ✅ 权限检查逻辑已恢复原始代码
4. ✅ 调试脚本已清理
5. ✅ `admin.php` / `public/admin.php` 已恢复原始入口
**潜在残留风险:**
- `app/plugins/vr_ticket/` 插件目录不在 worktree 中untracked 且不存在),需要从 Docker 重新获取
- `/tmp/` 目录可能残留旧的 debug 日志文件(`isPower_debug.log`, `plugins_debug.log`, `aipower_debug.log`),但不暴露于 Web 路径
**结论Plan A 已基本完成,当前状态安全。**
### Plan B — 重新 clone
```
git clone → 重新应用 → docker start
```
**安全劣势:**
- 重新 clone 会丢失当前已确认的安全状态
- 重新应用 Goods.php 那1行修改时可能引入新的人为错误
- 多一步操作 = 多一个出错机会
- vr_ticket 插件目录仍需从 Docker volume 获取
**结论Plan B 在安全层面无额外收益,反而增加操作风险。**
### vr_ticket 插件风险评估
- 该插件已在 MySQL DB 中启用(`is_enable=1`),但插件代码不在 worktree
- 插件代码如需重新部署,需要从 Docker volume 提取
- **风险**:如直接删除 Docker volume 中的插件目录但 DB 仍启用,可能导致 ShopXO 运行错误
---
## 待完成任务
- [x] 确认 debug 代码已清理(✅ 已确认 git status 干净)
- [ ] **高优先级**:从 Docker volume 提取 vr_ticket 插件代码并纳入 version control 或明确记录其来源
- [ ] **建议**:清理 `/tmp/` 下的 debug 日志(`isPower_debug.log`, `plugins_debug.log`, `aipower_debug.log`
- [ ] **建议**Docker 重启后验证 ShopXO 正常运行vr_ticket 插件 DB 启用但代码缺失状态)
---
## 依赖关系
| 任务 | 依赖 |
|------|------|
| vr_ticket 插件代码提取 | 需要 DevOps 从 Docker volume 获取 |
| Docker 重启验证 | DevOps 执行 |
| Goods.php 修改确认 | BackendArchitect 确认 |
---
## 阶段
- **Phase 1: Draft** — 完成 ✅(本 round 完成风险评估)
- **Phase 2: Review** — 待其他 member review
- **Phase 3: Finalize** — 待执行 vr_ticket 提取 + Docker 重启验证
---
## 建议行动
1. **立即确认当前状态安全** — Plan A 已完成,无需额外清理
2. **提取 vr_ticket 插件代码** — 从 Docker volume 提取到 worktree 或其他安全位置
3. **清理残留日志** — `rm -f /tmp/isPower_debug.log /tmp/plugins_debug.log /tmp/aipower_debug.log`
4. **Docker 重启**`docker stop shopxo-web shopxo-php && docker start shopxo-web shopxo-php`
5. **验证 ShopXO 运行** — 检查 vr_ticket 插件在无代码状态下的行为
---
## Claim 状态
- `[Done: SecurityEngineer]` — 安全风险评估完成
- `[Claimed: DevOps]` — Docker 重启操作(待分配)
- `[Claimed: DevOps]` — vr_ticket 插件提取(待分配)