Skip to content
ChromeMV3BrowserExtension

Chrome MV3 扩展开发:Paste Guard 的实现原理

MV3 的限制与机遇

Chrome Manifest V3 对扩展的能力做了很多限制:

  • 禁止远程代码执行
  • Service Worker 生命周期受限(5 分钟空闲即终止)
  • 网络请求拦截能力削弱

但 MV3 也带来机遇:

  • Content Script 隔离:每个页面的脚本运行在独立 VM 中
  • 声明式 API:减少运行时权限
  • 审核加速:更严格的审核标准意味着更安全的生态

架构设计

Vigils Paste Guard 采用三层架构:

  1. Content Script:注入 ChatGPT / Claude / Gemini / Perplexity 页面,监听 paste 和 beforeinput 事件
  2. Service Worker:接收 Content Script 消息,调用本地扫描引擎
  3. Native Host:与 vigils-hub 进程通信,获取最新的指纹规则和策略

事件拦截流程

用户按下 Ctrl+V → Content Script 捕获 paste 事件:

  1. 读取剪贴板内容
  2. 发送消息到 Service Worker
  3. Service Worker 调用硬规则扫描(<1ms)
  4. 如果命中,返回阻断/脱敏指令
  5. Content Script 阻止默认粘贴行为,显示 Toast 提示

整个流程在 5ms 内完成,用户几乎无感知。

Native Host 通信

Native Messaging 使用标准输入输出管道:

{
  "type": "scan",
  "text": "ghp_xxxxxxxxxxxx...",
  "origin": "chatgpt.com"
}

响应:

{
  "type": "scan_result",
  "action": "block",
  "finding": "github_token",
  "confidence": 1.0
}

通信管道在扩展启动时建立,断开后自动重连。

安全设计

  1. 零云端上报:所有扫描在本地完成,不发送任何数据到远程服务器
  2. 最小权限:Content Script 只请求 activeTab 权限,不读取浏览器历史
  3. 代码可审计:扩展源码完全开源,Chrome Web Store 审核可复现
  4. 策略不可绕过:即使 Content Script 被禁用,vigils-hub 层仍会拦截

与桌面端的协同

Paste Guard 不是孤立的。扫描结果会同步到 vigils-hub 的审计链:

[09:23:17] browser: [PASTE_BLOCKED] chatgpt.com github_token

企业管理员可以通过 vigils-desktop 查看所有浏览器端的拦截事件。