包含: - furniture-3d-system:Next.js 16 全栈应用(资产中心、产品管理、3D装配动画) - autocad-plugin:AutoCAD 家具导出插件源码 - 资产中心改造:编辑弹窗化、删除功能、Toast反馈、自定义Select组件 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
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 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product Hardware 接口缺少产品级权限护栏 | 2026-02-15 | product-hardware | security_issue | critical |
|
接口按资源 ID 直接读写,缺少 productId 归属权限校验 | code_fix | active | high |
|
|
现象与影响
攻击者只要拿到 productHardware.id,就可能越权读取产品结构细节或修改/删除不属于自己的五金件关联记录。
修复动作
- 新增
src/server/services/product-hardware.service.ts,在findById/update/delete统一执行:- 解析
productHardware.productId - 基于产品快照执行
canViewProduct/canEditProduct
- 解析
- 新增
src/server/repositories/product-hardware.repository.ts,由 Repository 承担查询与更新细节。 src/app/api/product-hardware/[id]/route.ts全面改为通过 Service 调用,GET 不再匿名开放。
验证
npm run type-check -- --pretty false通过npm test -- tests/lib/cad-panel-linking.test.ts --runInBand通过
预防策略
- 所有“按资源 ID 直接读写”的接口,必须在 Service 层做“资源 -> productId -> 权限”链路校验。
- Route 层不得直接承担权限规则分支与数据库读写。