You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展Manifest V3版本中如何允许使用eval函数?

Manifest V3 允许unsafe-eval的正确配置方案

Manifest V3对内容安全策略(CSP)的配置规则做了结构性调整,你之前尝试的配置结构不符合V3规范,一级键应为上下文类型而非CSP指令,因此无法生效。

优先方案:移除eval依赖

Chrome官方明确不推荐在扩展中使用eval类动态执行逻辑,优先重构代码替换eval:

  • 固定逻辑的动态执行可以替换为预置的函数分支
  • 必须动态生成逻辑的场景,优先使用模板字符串+预置函数的形式实现,避免执行任意字符串

临时方案:全局配置CSP开启unsafe-eval

如果确实无法移除eval依赖,按照如下格式修改manifest.json的CSP配置:

"content_security_policy": {
  "extension_pages": "script-src 'self' 'unsafe-eval'; object-src 'self'",
  "content_scripts": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}

注意事项:

  • 该配置仅在Chrome 103及以上版本生效,更低版本Chrome完全禁止Manifest V3扩展使用unsafe-eval,必须重构代码适配
  • 配置后扩展上架Chrome应用商店时会被严格审核,需要提供使用eval的合理必要性证明,无合理理由会被拒审

更安全的替代方案:沙箱独立执行

如果需要执行不可信的动态代码,建议使用扩展沙箱能力,既满足执行需求,也不需要给扩展全局开启unsafe-eval权限,更容易通过应用商店审核:

  1. 在manifest.json中添加沙箱配置:
"content_security_policy": {
  "sandbox": "sandbox allow-scripts; script-src 'unsafe-eval'"
},
"sandbox": {
  "pages": ["sandbox.html"]
}
  1. 创建沙箱页面sandbox.html,在页面内部实现eval执行逻辑,通过postMessage和扩展主上下文/内容脚本通信,传递待执行内容和执行结果。

内容的提问来源于stack exchange,提问作者Jeanluca Scaljeri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 05:36:03