2.4 KiB
2.4 KiB
Plan — vr-shopxo-plugin 安全评估 + 票务链路审计
版本:v1.0 | 日期:2026-05-26 | Agent:council/SecurityEngineer
Round 1 安全评估任务清单
- [Done: council/SecurityEngineer] Task 1: 审计购物车→支付→QR票生成链路(BuyService → onOrderPaid → issueTicket)
- [Done: council/SecurityEngineer] Task 2: 检查 FOR UPDATE SKIP LOCKED 防超卖实现(verifyTicket / issueTicket)
- [Done: council/SecurityEngineer] Task 3: QR签名机制审计(HMAC-SHA256、30分钟exp、code字段)
- [Done: council/SecurityEngineer] Task 4: 检查 BaseService QR Secret 配置(硬编码风险)
- [Done: council/SecurityEngineer] Task 5: 前端 XSS 风险初步评估
- [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 |
— | 完整安全评估报告 |