在 Chrome chrome-extension:// 页面中使用 eval()
Use eval() in a Chrome chrome-extension:// page
我知道这可能只是我的愚蠢,但是在一个 Chrome 选项卡中,该选项卡的页面加载了以 chrome-extension://
开头的 URL,脚本可以是在线还是使用 eval();
?我知道浏览器或页面 actin oopups 或应用 windows 不能使用它。我的扩展程序的一部分会打开一个正常的新标签页,其中包含一个使用 eval();
.
的页面
要使用 eval,请查看 https://developer.chrome.com/extensions/contentSecurityPolicy
中的政策 "unsafe-eval"
chrome-extension://
来源的所有页面 运行 均受 here 描述的默认内容安全策略的约束,特别是:
script-src 'self'; object-src 'self'
弹出窗口也被认为是这样的页面,不可见的背景页面也是如此。如果您从扩展程序中打开文件,它也会受到影响。
您可以:
放宽(或收紧)所有包含清单的页面的默认策略:
"content_security_policy": "[POLICY STRING GOES HERE]"
这样您就可以通过将 'unsafe-eval'
添加到 script-src
来允许 eval
和朋友。
您还可以通过将它们的来源添加到策略来允许加载外部脚本;但是,出于 MitM 保护的原因,只允许 HTTPS 来源。
但是,请务必记住,无论您的自定义策略如何,'unsafe-inline'
都将被忽略。
放宽(或收紧)特定页面的默认策略declaring it sandboxed。
"sandbox": {
"pages": [
"page1.html",
"directory/page2.html"
]
// content_security_policy is optional.
"content_security_policy":
"sandbox allow-scripts; script-src https://www.google.com"
],
沙盒 CSP 可以更宽松,但仍有一些限制。
沙盒的价格正在失去 Chrome API。沙盒脚本必须通过 DOM 消息与某些特权页面通信以执行特权操作。
对于应用程序,情况有点不同。同样,默认(且限制性更强)的 CSP 适用,但 you cannot modify it in the manifest.
不过,沙盒方法仍然有效。
我知道这可能只是我的愚蠢,但是在一个 Chrome 选项卡中,该选项卡的页面加载了以 chrome-extension://
开头的 URL,脚本可以是在线还是使用 eval();
?我知道浏览器或页面 actin oopups 或应用 windows 不能使用它。我的扩展程序的一部分会打开一个正常的新标签页,其中包含一个使用 eval();
.
要使用 eval,请查看 https://developer.chrome.com/extensions/contentSecurityPolicy
中的政策 "unsafe-eval"chrome-extension://
来源的所有页面 运行 均受 here 描述的默认内容安全策略的约束,特别是:
script-src 'self'; object-src 'self'
弹出窗口也被认为是这样的页面,不可见的背景页面也是如此。如果您从扩展程序中打开文件,它也会受到影响。
您可以:
放宽(或收紧)所有包含清单的页面的默认策略:
"content_security_policy": "[POLICY STRING GOES HERE]"
这样您就可以通过将
'unsafe-eval'
添加到script-src
来允许eval
和朋友。您还可以通过将它们的来源添加到策略来允许加载外部脚本;但是,出于 MitM 保护的原因,只允许 HTTPS 来源。
但是,请务必记住,无论您的自定义策略如何,
'unsafe-inline'
都将被忽略。放宽(或收紧)特定页面的默认策略declaring it sandboxed。
"sandbox": { "pages": [ "page1.html", "directory/page2.html" ] // content_security_policy is optional. "content_security_policy": "sandbox allow-scripts; script-src https://www.google.com" ],
沙盒 CSP 可以更宽松,但仍有一些限制。
沙盒的价格正在失去 Chrome API。沙盒脚本必须通过 DOM 消息与某些特权页面通信以执行特权操作。
对于应用程序,情况有点不同。同样,默认(且限制性更强)的 CSP 适用,但 you cannot modify it in the manifest.
不过,沙盒方法仍然有效。