如何在 Chrome 扩展版本 3 中允许 eval

Jea*_*eri 10 javascript google-chrome-extension

我正在将我的 chrome 扩展升级到清单版本 3。但是,我的扩展eval在其内容脚本中使用。在版本 3 中我收到以下错误

Error in event handler: EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self'".
Run Code Online (Sandbox Code Playgroud)

我在版本 2 中解决了这个问题,如下所示:

 "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
Run Code Online (Sandbox Code Playgroud)

但这已经改变了,我尝试了很多东西

"content_security_policy": {
    "script-src": "self unsafe-eval",
    "unsafe-eval": "object-src self",
    "unsafe-inline": "self"
}
Run Code Online (Sandbox Code Playgroud)

我不确定这里到底能做什么,所以任何帮助将不胜感激

Bek*_*caj 5

看看是否可以使用Function( "return "+ toBeEvaluated )()构造函数绕过它;如果也被列入黑名单,看看他们是否被排除setTimeout( toBeEvaluated, 1 )在外。这也可以作为替代品。

但这个修复并没有什么用——我们需要从根源上解决问题。需要纠正围绕 eval 命令的迷信。人们需要停止对权力的恐惧。

  • 谷歌还将“Function”构造函数列入黑名单。但在这种情况下,这与迷信或恐惧无关。谷歌试图保护其用户免受恶意扩展开发者的侵害。Chrome Web Store 中存在许多可疑扩展程序,这些扩展程序使用“评估”代码或外部脚本窃取用户数据。现在这种情况不可能发生,因为 Google 确保扩展程序可以运行的所有代码都位于它在发布之前检查的源代码中。这是个好消息。 (3认同)