Files
Nexus/docs/audit/2026-06-11-global-floating-browser.md
T
2026-07-08 22:31:31 +08:00

1.5 KiB

审计 — 全局浮动浏览器

范围(文件清单)

文件 变更
server/utils/browser_ui_state.py URL 校验、visit 上限
server/api/browser.py /api/browser/state
server/main.py 注册 browser 路由
frontend/src/composables/useGlobalBrowser.ts 全局状态
frontend/src/components/GlobalBrowserPanel.vue 浮动面板
frontend/src/composables/useFloatingPanel.ts 可配置最小尺寸,支持迷你条拖动
frontend/src/pages/BrowserPage.vue 打开全局窗并返回
frontend/src/App.vue 挂载 GlobalBrowserPanel
frontend/src/pages/ServersPage.vue 站点按钮
frontend/src/composables/useEmbeddedBrowser.ts 删除(由 global 替代)
tests/test_browser_ui_state.py 单测

Step 3 规则扫描

H 规则 结论
H1 无 SSRF PASS — 无服务端 fetch
H2 URL 白名单 PASS — http/https only
H3 按管理员隔离 PASS — admin_ui_preferences
H4 iframe sandbox PASS

Closure

H 判定 依据
H1 PASS 纯 iframe,无 proxy
H2 PASS browser_ui_state._is_safe_url
H3 PASS AdminUiPreference per admin
H4 PASS GlobalBrowserPanel sandbox attr

DoD

  • pytest test_browser_ui_state.py
  • type-check
  • changelog

验证

浮动打开 → 最小化可拖动浮动条 → 左下角展开 → 不可关闭仅可重启 → 切换菜单 iframe 仍在。