我正在创建一个Chrome扩展,它修改由服务器提供的脚本(我无法控制)以向网站添加新功能,我有以下想法:
webRequestBlocking.
(另一种工作方式是将其重定向到Chrome扩展文件夹中的本地修改脚本return { redirectUrl: chrome.extension.getURL("modified.js") };,但是不可能动态修改它,这就是为什么我想对修改过的脚本进行验证)
当我尝试在第五步中对字符串进行评估时,它会说:...'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'nonce-DFX4zDtBDF32343LjE2DFKMs' 'self' https://website.com"。
我尝试使用webRequest.onHeadersReceived来查看是否可以更改CSP头(一些答案是:Edit Content Security Policy in onHeadersReceived),但是没有“内容-安全-策略”标题。
我可以看到一个元标记(除了‘script-src’之外,我省略了所有内容):
<meta http-equiv="Content-Security-Policy" content="script-src 'nonce-DFX4zDtBDF32343LjE2DFKMs' 'self' https://website.com; base-uri 'none';">根据这个答案(https://stackoverflow.com/a/27324485/10364842),Chrome扩展不能覆盖网页的CSP。但有人回答说:I know this is incredibly old, but I came across it while trying to inject Artoo.js into a page. The chrome extension does indeed allow you to modify the page you're looking at and let any content through.
Eval在内容脚本中工作,但是我需要在页面的上下文中执行脚本,因为它依赖于全局范围。
我想知道是否有可能通过Chrome扩展来改变网页的CSP,或者是否有其他方法仅仅通过Chrome扩展来实现这一点?
发布于 2021-03-02 15:04:49
“默认情况下,扩展具有应用于它们的内容安全策略。默认策略限制它们可以从其中加载和资源的源,并且不允许可能不安全的做法,例如使用eval()。请参阅默认内容安全策略以了解此策略的更多含义。
您可以使用"content_security_policy“清单键放松或收紧默认策略。此键的指定方式与报头相同。有关CSP语法的一般描述,请参见使用内容安全策略。
https://stackoverflow.com/questions/61711565
复制相似问题