furniture-3d-system-Wu/furniture-3d-system/docs/solutions/security-issues/panel-write-permission-guard-20260215.md
WuYongJie 5821d73291 初始提交:3D家具安装展示系统
包含:
- furniture-3d-system:Next.js 16 全栈应用(资产中心、产品管理、3D装配动画)
- autocad-plugin:AutoCAD 家具导出插件源码
- 资产中心改造:编辑弹窗化、删除功能、Toast反馈、自定义Select组件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 14:00:19 +08:00

1.3 KiB
Raw Blame History

title, date, module, problem_type, severity, symptoms, root_cause, resolution_type, status, confidence, tags, related_patterns
title date module problem_type severity symptoms root_cause resolution_type status confidence tags related_patterns
Panel 写操作缺少 Service 层权限护栏 2026-02-15 panel-service security_issue critical
板件创建路由做了权限校验,但 Service 层写操作未做 canEditProduct 兜底
可通过绕过 Route 的调用路径触发越权写入
权限逻辑集中在 Route,Service 层缺少防线 code_fix active high
security
idor
permission
panel
service-layer

现象与影响

板件创建接口在 Route 层做了登录+编辑权限校验,但 panel.service.ts 的 create/update/delete/importFromZip 在写库前不校验产品编辑权限。
一旦存在绕过 Route 的调用(内部复用、脚本、后续新增路由等),会造成跨产品越权写入。

修复动作

  1. 在 Service 层新增 assertCanEditProduct 权限护栏。
  2. 新增 parseCollaborators 解析 JSON 协作者列表,兼容权限函数输入。
  3. 将护栏接入 create/update/delete/importFromZip 四个写操作。

验证

  • npm run type-check -- --pretty false 通过

预防策略

  • 所有写操作必须“Route + Service 双层权限校验”。
  • 新增写接口时,优先复用统一权限护栏方法,避免每个方法重复拼装权限对象。