前端开发您现在的位置是:首页 > 博客日志 > 前端开发

Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Con

<a href='mailto:'>微wx笑</a>的头像微wx笑 2023-02-11前端开发 0 0关键字: eval  

谷歌扩展插件中使用 eval 将 ajax 返回的数据转换为对象时,遇到错误:Uncaught EvalError: Refused to evaluate a string as JavaScript because &#39;unsafe-eval&#39; is no

谷歌扩展插件中使用 eval 将 ajax 返回的数据转换为对象时,遇到错误:Uncaught 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' 'wasm-unsafe-eval'"PUZ无知


PUZ无知

unsafe-eval:PUZ无知

  • ‘unsafe-inline’和‘unsafe-eval’表达式重新启用内联JavaScript和动态代码执行,这些默认情况下都是被CSP禁用的。理想情况下,通常不会希望在策略里保留这些表达式,但没有它们大多数现有的应用都会被阻断。PUZ无知

尝试解决方案:PUZ无知

//Manifest v2
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'" 

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

添加unsafe-eval标实,但是插件会给我们抛错:PUZ无知

'content_security_policy.extension_pages': Insecure CSP value "'unsafe-eval'" in directive 'script-src'.PUZ无知

'content_security_policy.extension_pages':指令'script-src'中的不安全CSP值“'unsafe-eval'”。PUZ无知


PUZ无知

官方解释PUZ无知

PUZ无知

 实际上,Chrome扩展不允许使用unsafe-eval或eval 。 PUZ无知


PUZ无知

 https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_Security_Policy PUZ无知


PUZ无知

 在制作Chrome扩展程序时,请注意它受到内容安全策略的严格限制。 确保您阅读并理解WebExtensions内容安全策略。 如果你想有一个内联脚本,如: PUZ无知

<script>PUZ无知

    alert('hello')PUZ无知

</script>PUZ无知

 PUZ无知

 您必须将脚本标记内容计算到其SHA256值中,并将其添加到您的清单中,以便允许执行它。 PUZ无知


PUZ无知

A chrome extension is not allowed to use unsafe-eval, or eval at all in fact.PUZ无知

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_Security_PolicyPUZ无知

When making a Chrome extension understand that it's severely limited by Content Security Policies. Make sure you read and understand the WebExtensions Content Security Policy. If you want to have an inline script like:PUZ无知

<script>PUZ无知

    alert('hello')PUZ无知

</script>PUZ无知

You're gonna have to calculate the script tags contents into its SHA256 value and add that to your manifest in order for it to be allowed to be executed.PUZ无知


PUZ无知

如果是自己的网站,可以尝试通过 mata 标签来解决,未经验证:PUZ无知

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">

参考:https://blog.csdn.net/gao_zhennan/article/details/126006827PUZ无知

我的是Chrome扩展,等于是自己的代码运行在别人的网站上,肯定是不行了。PUZ无知


PUZ无知

所以只能使用 JSON.parse 了,PUZ无知

如果你是希望通过 eval 将js代码转换为对象的话,需要别想办法了。PUZ无知


PUZ无知


PUZ无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/front/2023-02-11/1713.html

很赞哦! () 有话说 ()