# 审计 — 移除 iframe 内置浏览器

**Changelog**: `docs/changelog/2026-06-11-remove-embedded-browser.md`

## 范围（文件清单）

| 文件 | 变更 |
|------|------|
| `frontend/src/components/GlobalBrowserPanel.vue` | 删除 |
| `frontend/src/composables/useGlobalBrowser.ts` | 删除 |
| `frontend/src/pages/BrowserPage.vue` | 删除 |
| `server/api/browser.py` | 删除 |
| `server/utils/browser_ui_state.py` | 删除 |
| `tests/test_browser_ui_state.py` | 删除 |
| `frontend/src/App.vue` | 移除 GlobalBrowserPanel、侧栏项 |
| `frontend/src/router/index.ts` | 移除路由 |
| `frontend/src/pages/ServersPage.vue` | 站点 → window.open |
| `server/main.py` | 移除 router |

## Step 3 规则扫描

| H | 规则 | 结论 |
|---|------|------|
| H1 | 无 SSRF 新增 | PASS — 删除 iframe，站点按钮仅客户端 window.open |
| H2 | 无静默吞错 | PASS — 无新增 |
| H3 | 无密钥 | PASS |
| H4 | CUD 审计 | N/A — 删除 API，无新 CUD |

## Closure

| H | 判定 | 依据 |
|---|------|------|
| H1–H4 | PASS | 纯删除 + 外链兜底 |

## DoD

- [x] type-check
- [x] 删除 `/api/browser` 路由
- [ ] 生产部署（待用户批准）

## 验证

侧栏无浏览器；站点按钮新标签打开公网 URL。
