第五部分 — 内容脚本与页面交互 DOM 访问模式与安全桥接

12.1 目的

有些页面操作无法直接在内容脚本中完成:

  • 调用页面 JS 函数

  • 与页面拥有的变量进行交互

本节展示了一个安全的"桥梁"模式。

12.2 使用场景 / 避免场景

使用场景: 当你需要在页面世界运行代码时。

避免场景: 仅需一个隔离世界的 DOM 变更即可。 如果可以从服务工作者 orchestrating,这是在页面的 JavaScript 环境中运行代码最可靠的方式。

sw.js:

javascript 复制代码
async function runInPageWorld(tabId) {
  const [{ result }] = await chrome.scripting.executeScript({
    target: { tabId },
    world: "MAIN", // page world (page CSP applies)
    func: () => {
      // Runs in the page's JS environment.
      return { href: location.href, title: document.title };
    },
  });
  return result;
}
复制代码

注释:

  • 需要 scripting 权限加上主机访问权限(host_permissions 或 activeTab)。

  • 主程序世界代码未被隔离;请保持其简洁,并且切勿暴露机密信息。

12.4 回退方案:postMessage 桥接(内容脚本 ↔ 页面)

这种模式简单易行,但同时也较为脆弱: 向页面世界注入 <script> 标签可能会被页面的 CSP 阻止。

content.js: CODE_BLOCK_56

最小示例

一个最小的 MV3 安全异步消息处理器(适合作为模板使用): CODE_BLOCK_57

12.5 常见问题

  • postMessage 操作务必谨慎(始终验证 type + 形状)。

  • 向页面泄露机密信息(切勿在页面中暴露扩展程序的机密信息)。

  • MAIN 世界并非隔离;页面代码可能会互相干扰(请尽量保持简洁)。

12.6 检查清单

相关推荐
能年玲奈喝榴莲牛奶5 分钟前
网络安全服务-网络安全检查
安全·web安全·网络安全·安全服务
韩明君5 分钟前
OpenClaw安全部署实现
linux·人工智能·安全·debian·本地部署·ai agent·openclaw
铭彩色10 分钟前
refresh token(保证access token获取及用户安全)
java·安全
至顶科技13 分钟前
微软加速量子安全密码学算法集成进程
安全·microsoft·密码学
钟智强14 分钟前
国内环境Ollama安装与DeepSeek-R1:1.5b部署全攻略
安全·web安全·网络安全·ollama·deepseek
胡志辉34 分钟前
前端反调试:常见套路、识别方法与绕过思路
前端·安全
代码飞一会儿38 分钟前
CTF之信息泄漏——你什么都没说但什么都告诉了我
安全
上海云盾-小余1 小时前
出海业务安全架构搭建:跨境云主机合规部署与全域抗攻击策略
安全·安全架构
志栋智能2 小时前
超自动化安全:让安全防护从“有效”到“高效”
运维·网络·人工智能·安全·自动化
Bruce_Liuxiaowei2 小时前
2026年4月第4周网络安全形势周报
安全·web安全·ai