vr-shopxo-plugin/plan.md

58 lines
2.4 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.

# Plan — vr-shopxo-plugin 安全评估 + 票务链路审计
> 版本v1.0 | 日期2026-05-26 | Agentcouncil/SecurityEngineer
---
## Round 1 安全评估任务清单
- [x] [Done: council/SecurityEngineer] **Task 1**: 审计购物车→支付→QR票生成链路BuyService → onOrderPaid → issueTicket
- [x] [Done: council/SecurityEngineer] **Task 2**: 检查 FOR UPDATE SKIP LOCKED 防超卖实现verifyTicket / issueTicket
- [x] [Done: council/SecurityEngineer] **Task 3**: QR签名机制审计HMAC-SHA256、30分钟exp、code字段
- [x] [Done: council/SecurityEngineer] **Task 4**: 检查 BaseService QR Secret 配置(硬编码风险)
- [x] [Done: council/SecurityEngineer] **Task 5**: 前端 XSS 风险初步评估
- [x] [Done: council/SecurityEngineer] **Task 6**: 输出安全评估报告 → `docs/council-eval-securityengineer.md`
---
## 阶段划分
| 阶段 | 内容 | 状态 |
|------|------|------|
| **Round 1 Draft** | 安全审计 + 评估报告 | ✅ 完成 |
| **Round 1 Review** | 投票 + 报告写入 main | 🔄 进行中 |
---
## 安全评估结论摘要
| # | 问题 | 严重性 | 状态 |
|---|------|--------|------|
| S-1 | issueTicket() 并发竞态(无悲观锁) | **P0 建议** | 建议加唯一索引 `(order_id, seat_info)` |
| S-2 | QR Secret 硬编码 fallback | **P1** | 需确认生产环境 `.env` 配置 |
| S-3 | FOR UPDATE SKIP LOCKED 概念混淆 | **P2** | 防超卖依赖ShopXO原子UPDATE已有效 |
| S-4 | onOrderPaid 无事务包装 | **P2** | 可接受(有幂等保护) |
| S-5 | 前端XSS观演人渲染 | **P3** | 需确认渲染方式 |
**无 P0 安全漏洞。支付链路整体安全,建议持续改进。**
---
## 投票
**议题:下一步主攻方向**
**投票C双线并行**
---
## 关键文件索引
| 文件 | 行号 | 安全关注点 |
|------|------|-----------|
| `shopxo/app/plugins/vr_ticket/service/TicketService.php` | 159-169 | issueTicket() 幂等检查(无悲观锁) |
| `shopxo/app/plugins/vr_ticket/service/TicketService.php` | 252-256 | verifyTicket() FOR UPDATE |
| `shopxo/app/plugins/vr_ticket/service/TicketService.php` | 25-138 | onOrderPaid 回调 |
| `shopxo/app/plugins/vr_ticket/service/BaseService.php` | 302-303 | QR Secret 硬编码 fallback |
| `shopxo/app/service/BuyService.php` | 1650-1684 | ShopXO 原子条件库存扣减 |
| `docs/council-eval-securityengineer.md` | — | 完整安全评估报告 |