ChromeMV3BrowserExtension
Chrome MV3 扩展开发:Paste Guard 的实现原理
MV3 的限制与机遇
Chrome Manifest V3 对扩展的能力做了很多限制:
- 禁止远程代码执行
- Service Worker 生命周期受限(5 分钟空闲即终止)
- 网络请求拦截能力削弱
但 MV3 也带来机遇:
- Content Script 隔离:每个页面的脚本运行在独立 VM 中
- 声明式 API:减少运行时权限
- 审核加速:更严格的审核标准意味着更安全的生态
架构设计
Vigils Paste Guard 采用三层架构:
- Content Script:注入 ChatGPT / Claude / Gemini / Perplexity 页面,监听 paste 和 beforeinput 事件
- Service Worker:接收 Content Script 消息,调用本地扫描引擎
- Native Host:与 vigils-hub 进程通信,获取最新的指纹规则和策略
事件拦截流程
用户按下 Ctrl+V → Content Script 捕获 paste 事件:
- 读取剪贴板内容
- 发送消息到 Service Worker
- Service Worker 调用硬规则扫描(<1ms)
- 如果命中,返回阻断/脱敏指令
- 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
}
通信管道在扩展启动时建立,断开后自动重连。
安全设计
- 零云端上报:所有扫描在本地完成,不发送任何数据到远程服务器
- 最小权限:Content Script 只请求 activeTab 权限,不读取浏览器历史
- 代码可审计:扩展源码完全开源,Chrome Web Store 审核可复现
- 策略不可绕过:即使 Content Script 被禁用,vigils-hub 层仍会拦截
与桌面端的协同
Paste Guard 不是孤立的。扫描结果会同步到 vigils-hub 的审计链:
[09:23:17] browser: [PASTE_BLOCKED] chatgpt.com github_token
企业管理员可以通过 vigils-desktop 查看所有浏览器端的拦截事件。