禁用firefox同源策略

时间:2013-06-13 13:41:09

标签: security firefox same-origin-policy

我正在开发一个本地研究工具,要求我关闭Firefox的同源策略(在脚本访问方面,我并不真正关心跨域请求)。

更具体地说,我希望主机域中的脚本能够访问页面中嵌入的任何iframe中的任意元素,无论其域名如何。

我知道之前的Q& As提到了CORS FF扩展,但这不是我需要的,因为它只允许CORS,但不允许脚本访问。

如果不能轻易完成,我也非常感谢任何能够指出我可以修改以禁用SOP的FF src代码的特定部分的见解,以便我可以重新编译FF。

7 个答案:

答案 0 :(得分:78)

有一个Firefox扩展,可以将CORS标头添加到任何处理最新Firefox( build 36.0.1 2015年3月5日的HTTP响应中。 我测试了它,它适用于Windows 7和Mavericks。我会引导你完成让它运作的步骤。

1)获取扩展程序

您可以从here(作者构建)或here下载xpi (镜像,可能不会更新)。

或者从GitHub下载files。 现在它也出现在Firefox Marketplace上:Download here。在这种情况下,单击安装后会安装插件,您可以跳到步骤4.

如果你下载了xpi,你可以跳到第3步。如果你从GitHub下载了zip,请转到第2步。

2)构建xpi

你需要提取zip,进入“cors-everywhere-firefox-addon-master”文件夹,选择所有项目并压缩它们。 然后,将创建的zip重命名为* .xpi

注意:如果您使用的是OS X gui,它可能会创建一些隐藏文件,因此您最好使用命令行。

3)安装xpi

你可以将xpi拖放到firefox,或者转到:“about:addons”,点击右上角的cog并选择“从文件安装添加”,然后选择你.xpi文件。现在,重启firefox。

4)让它发挥作用

现在,默认情况下,扩展程序不起作用。您需要将扩展​​程序图标拖到扩展栏,但不要担心。有照片!

  • 点击Firefox菜单
  • 点击自定义

p1

  • 将CorsE拖到栏中
  • 现在,点击图标,当它为绿色时,CORS标题将被添加到任何HTTP响应中

p2

5)测试它是否有效

的jQuery

$.get( "http://example.com/", function( data ) {
  console.log (data);
});

的JavaScript

xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
        console.log(xmlhttp.responseText);
    }
}

xmlhttp.open("GET","http://example.com/");
xmlhttp.send();

6)最后的考虑因素

请注意https to http is not allowed

可能有办法绕过它,但它落后于问题的范围。

答案 1 :(得分:31)

about:config -> security.fileuri.strict_origin_policy -> false

答案 2 :(得分:7)

我意识到我的旧答案被低估了,因为我没有具体说明如何禁用FF相同的原始政策。在这里,我将给出一个更详细的答案:

警告:这需要重新编译FF,新编译的Firefox版本将无法再次启用 SOP。

查看Mozilla的Firefox源代码,在src目录中找到nsScriptSecurityManager.cpp。 我将使用此处列出的那个作为示例: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

转到函数实现nsScriptSecurityManager :: CheckSameOriginURI,截止日期为03/02/2016,这是第568行。

使该函数始终返回NS_OK。

这将禁用SOP。

@Giacomo的浏览器插件回答应该对大多数人有用而且我接受了答案,但是,对于我的个人研究需求(TL;在这里不解释)这还不够,我想其他的研究人员可能需要做我在这里做的事情来彻底杀死SOP。

答案 3 :(得分:6)

我写了一个附加组件来解决这个问题在Firefox(Chrome,Opera版本即将推出)。它适用于最新的Firefox版本,具有漂亮的UI并支持JS正则表达式:https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors

enter image description here

答案 4 :(得分:3)

2016年9月以来,此插件最好禁用 CORS https://github.com/fredericlb/Force-CORS/releases

在选项面板中,您可以配置要注入的标头和特定网站以自动启用它。

enter image description here

答案 5 :(得分:0)

cors-everywhere插件对我有效,直到Firefox 68,在68之后,我需要进行调整 'privacy.file_unique_origin'-> false(通过打开'about:config'来解决),以解决引入新的CORS同源规则的'CORS request not HTTP'。

答案 6 :(得分:0)

about:config中添加content.cors.disable(空字符串)。