跨站点 XMLHttpRequest 内容安全策略指令解决方法

Cross site XMLHttpRequest Content Security Policy directive workaround?

本文关键字:指令 解决 方法 安全策略 站点 XMLHttpRequest      更新时间:2023-09-26

我正在使用一个用户脚本,每当网站上的某些内容根据我的定义发生变化时,它都会播放声音并向我发送一些通知。

最近,修复了不相关的XSS漏洞的服务器端更改也阻止了这两件事,因为正在发出跨站点请求:

拒绝连接到"http://myhomepage.com/mysound.mp3",因为它违反了以下内容安全策略指令:"connect-src 'self' https://websitetocheck.com"。

我该怎么做才能绕过新的服务器端限制来找回我的小声音和通知器?

任何想法或链接将不胜感激!

GM_xmlhttpRequest跨域工作,您可以手动设置HTTP标头。此外,您可以将声音文件作为数据 URI 嵌入到脚本中,或使用 @resource 来要求声音文件。在脚本中具有文件内容后,将数据 URI 提供给<audio>以进行填充。

FIREFOX 用户的解决方案:

如果你使用的是 Firefox,有一个非常有用的扩展,可以让你使用 javascript 修改 Firefox 的每个请求头和每个响应头。它可以用于很多事情,但在这里我将向您展示如何绕过"内容安全策略"。

  • 此扩展的名称:">重写 HTTP 标头 (JS(">
  • 安装页面: https://addons.mozilla.org/en-US/firefox/addon/moz-rewrite-js/

此扩展还有一个 (JSON( 版本,但请确保从我刚刚提供的链接中使用 (JS( 版本。

安装扩展并重新启动火狐浏览器。现在我们需要配置它。我将在这里为您提供所有步骤:

(它可能看起来又长又复杂,但实际上,它非常简单。我只是提供所有可能的详细信息,以便每个人都能够配置选项。

  • 打开火狐浏览器的扩展管理器。
  • 单击选项按钮
  • 确保"HTTP 请求"和">HTTP 响应"都已启用
  • 还要确保两个">监视间隔"都设置为至少"1000"(它将每 1 秒查找一次对脚本文件所做的更改。完成脚本编辑后,可以将其设置回"0"以节省一些CPU(
  • 对于两个脚本的位置,您可以使用指向 Firefox 配置文件目录的 {ProfD} 变量,而不是使用 find 按钮。如果您使用的是可以更改位置的便携式Firefox,则此功能特别有用。请注意,如果您将框保留为"空",则"默认情况下"它不会起作用。
  • 您的两个"位置"框应如下所示:">{ProfD}''moz-rewrite''requests.js"和">{ProfD}''moz-rewrite''responses.js">
  • 文件夹和脚本文件
  • 不会自动创建,因此您需要在">Firefox 的配置文件目录"中创建一个名为">moz-rewrite"的新文件夹,然后创建脚本文件
  • 例:
    • "C:''Users''YourName''AppData''Roaming''Mozilla''Firefox''Profiles''qwertyui.default''moz-rewrite''requests.js">
    • "C:''Users''YourName''AppData''Roaming''Mozilla''Firefox''Profiles''qwertyui.default''moz-rewrite''responses.js">

现在配置已经完成,您需要做的就是用记事本打开"响应.js",将下面的脚本复制并粘贴到此文件中,保存它,您应该能够绕过此"XMLHttpRequest 内容安全策略"。

// responses.js
// 
[
    {
    "url" : new RegExp('^https?://myhomepage'.com/mysound'.mp3', 'i'),
    "headers" : {
        "Content-Security-Policy"   : null,
        "Access-Control-Allow-Origin" : "*"
        }
    }
]
// End of script

请注意,使用上面的脚本,您需要将 Mp3 文件的网址修改为真实文件。如果要绕过"myhomepage.com"上任何mp3文件的"内容安全策略",或者如果以前的脚本有问题,则可以改用此脚本:

// responses.js
// 
[
    {
    "url" : new RegExp('^https?://myhomepage'.com/.*'.mp3', 'i'),
    "headers" : {
        "Content-Security-Policy"   : null,
        "Access-Control-Allow-Origin" : "*"
        }
    }
]
// End of script

这是此扩展的一些非常有趣的小脚本的链接。例如,有一个小的"广告拦截器"脚本,另一个脚本用于将搜索引擎查询从雅虎重定向到谷歌。链接: https://github.com/warren-bank/moz-rewrite/tree/js/data/recipe-book

如果你知道如何编写Javascript代码,你真的应该看看这个。有关更多信息或阅读有关"重写 HTTP 标头 (JS("的文档。链接: https://github.com/warren-bank/moz-rewrite