vr-shopxo-source/plan.md

119 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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 插件提取(待分配)