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

时间:2014-12-20 01:52:10

标签: javascript xmlhttprequest cross-site

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

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

  

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

我可以做些什么来解决新的服务器端限制以取回我的小声音和通知程序?

任何想法或链接都将受到高度赞赏!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

FIREFOX用户的解决方案:

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

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

安装扩展程序并重新启动 Firefox。现在我们需要配置它。我会在这里给你所有的步骤:

(它可能看起来很复杂但事实上,它非常简单。我只是提供所有可能的细节,以便每个人都能够配置选项。)

  • 打开 Firefox的Extension Manager。
  • 点击选项按钮
  • 确保&#34; HTTP请求&#34;和&#34; HTTP响应&#34;是已启用
  • 同时确保&#34; 观看时间间隔&#34;被设定为至少&#34; 1000&#34; (它将查找每1秒对脚本文件所做的更改。完成脚本编辑后,可以将其设置回&#34; 0&#34;以节省一些CPU)
  • 对于两个脚本的位置,您可以使用指向Firefox配置文件目录的 {ProfD} 变量,而不是使用查找按钮。如果您使用可以更改位置的便携式Firefox,它尤其有用。请注意,如果您将方框&#34;空&#34;,它将无法正常工作&#34;默认为&#34;。
  • 您的两个&#34;位置&#34;框应该如下所示:&#34; {ProfD} \ moz-rewrite \ requests.js &#34;和&#34; {ProfD} \ moz-rewrite \ responses.js &#34;
  • 不会自动创建文件夹和脚本文件,因此您需要在&#34; Firefox的配置文件目录中创建新文件夹#34;命名&#34; moz-rewrite &#34;然后创建脚本文件。
  • 实施例:
    • &#34; C:\ Users \用户YOURNAME \应用程序数据\漫游\ Mozilla的\火狐\概况\ qwertyui.default \ MOZ-重写\ requests.js&#34;
    • &#34; C:\ Users \用户YOURNAME \应用程序数据\漫游\ Mozilla的\火狐\概况\ qwertyui.default \ MOZ-重写\ responses.js&#34;

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

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

请注意,使用上面的脚本,您需要修改真实脚本的Mp3文件的Web地址。如果你想绕过内容安全政策&#34;对于&#34; myhomepage.com&#34;上的任何mp3文件,或者如果您在上一个脚本中遇到问题,则可以改为使用此脚本:

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

以下是此扩展程序的一些非常有趣的小脚本的链接。例如,有一个小的广告拦截器&#34;脚本和另一个脚本用于将搜索引擎查询从Yahoo重定向到Google。链接:https://github.com/warren-bank/moz-rewrite/tree/js/data/recipe-book

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