禁用 Firefox 同源策略

     2023-03-04     37

关键词:

【中文标题】禁用 Firefox 同源策略【英文标题】:Disable firefox same origin policy 【发布时间】:2013-06-09 22:18:34 【问题描述】:

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

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

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

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

【问题讨论】:

这对开发人员来说是一件有趣的事情。由于同源策略是为用户而非开发人员的安全而设计的,因此应该允许来自 given 站点的脚本跨越限制。但开发人员也是人,因此您也可能会丢失您的个人信息。 我相信现在不可能,这里是 Firefox Bugzilla 中的相关错误报告:bugzilla.mozilla.org/show_bug.cgi?id=1039678 唯一好的解决方案是通过基于域的插件注入标头:***.com/a/44093160/956397 其他一切都不安全... 【参考方案1】:

有一个 Firefox 扩展,可将 CORS 标头添加到在 2015 年 3 月 5 日发布的最新 Firefox(build 36.0.1)上运行的任何 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 并选择“install add on from file”,然后选择您的 .xpi 文件。现在,重新启动 Firefox。

4) 让它发挥作用

现在,默认情况下扩展程序将无法运行。您需要将扩展​​图标拖到扩展栏中,但不用担心。有图!

点击 Firefox 菜单 点击自定义

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

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。

可能有办法解决它,但它不在问题的范围内。

【讨论】:

您可以通过将 security.mixed_content.block_active_content 设置为 false 并将 security.mixed_content.block_display_content 设置为 true 来禁用 HTTP/HTTPS 混合内容保护。请记住,您正在禁用某些安全性,这应该是一个临时解决方案。 作为这个插件的作者,我实际上并不相信它会解决这个特定的问题。不过很高兴得到提及。 @speibus - 你应该让你的插件签名 - 我无法安装它:( - support.mozilla.org/en-US/kb/… @PeterAjtai Mozilla 一直在努力惹恼我。等待审核:addons.mozilla.org/en-US/firefox/addon/cors-everywhere 应该会自动签名。 在 about:config 中将 xpinstall.signatures.required 设置为 false 以安装插件。它对我有用。【参考方案2】:
about:config -> security.fileuri.strict_origin_policy -> false

【讨论】:

感谢@Niklas,但是,我认为这只会禁用 fileuri 同源策略检查 - 可能用于本地 Web 开发测试。当我尝试从域 A 中的 JavaScript 访问具有域 B 的 iframe 中的 DOM 节点时,它仍然阻止了我。 这没有任何作用 确认它在我的 firefox(开发者)版本中工作:40。谢谢@Niklas 的提示。 这是一个专门用于调试的设置,控制一个本地文件访问其他本地文件(设置为true一个本地文件只能访问同文件夹或子文件夹中的本地文件,设置为false一个本地文件可以访问所有本地文件)。 Source 确实做了一些事情,就我而言,它允许我从通过file:// 协议提供的文档访问本地资源。计算机科学家应该更加重视“任何东西”这个词——除非你已经测试了所有东西(你还没有测试过),否则你的言论要更加保守。使用“无用”一词也是如此。【参考方案3】:

我意识到我的旧答案被否决了,因为我没有具体说明如何禁用 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。

【讨论】:

今天第 499 行,Git 镜像:github.com/mozilla/gecko-dev/blob/…【参考方案4】:

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

【讨论】:

谢谢。此外,还有CORS-Everywhere Extension 类似。 它不工作。我尝试启用它,但仍然收到错误消息“跨源请求被阻止:同源策略不允许读取远程资源”。【参考方案5】:

截至 2016 年 9 月,此插件是禁用 CORS 的最佳选择:https://github.com/fredericlb/Force-CORS/releases

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

【讨论】:

来自wiki.mozilla.org/Add-ons/Extension_Signing:Firefox 48:桌面版 Firefox 的发行版和 Beta 版将不允许安装未签名的扩展,没有覆盖。我找不到此插件的签名版本。 @FelixM 操作方法如下:ghacks.net/2016/08/14/… @FelixM Firefox 开发者版在“about:config”标志中有一个选项“xpinstall.signatures.required”布尔值。但是,此扩展的 0.1.1 版本与 Firefox Developer Edition 58.0 (Quantum) 不兼容。【参考方案6】:

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

【讨论】:

【参考方案7】:

对我来说,将 content.cors.disable 设置为 false

【讨论】:

【参考方案8】:

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

【讨论】:

这个测试过吗?从我读到的内容来看,这个首选项旨在使所有 CORS 请求在设置为true 时失败,但对false 或其他值只字未提。 “在 Firefox 中,禁用 CORS 的首选项是 content.cors.disable。将此设置为 true 会禁用 CORS,因此无论何时,CORS 请求都会因此错误而失败。” developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/… 从 Firefox 68.7 开始,此设置甚至不可用。 在 FF 84 中找到了这个设置,但它并没有帮助我解决 FF 想要对外国服务器有效的 CORS 策略的问题。 在 FF85 content.cors.disable 中存在,但它的布尔值,删除/编辑是不可能的

我可以在任何浏览器上禁用 SOP(同源策略)进行开发吗?

...以关闭SameOriginPolicy以便我可以在本地开发的浏览器吗?Firefox将是最佳选择。或者,如果您知道我可以将 查看详情

Chrome:禁用本地主机的同源策略

】Chrome:禁用本地主机的同源策略【英文标题】:Chrome:Disablesameoriginpolicyforlocalhost【发布时间】:2014-02-0508:29:51【问题描述】:我正在开发一个phonegap/cordova应用程序,它不受我关心的网站的同源策略的约束。我使用chrome浏览器... 查看详情

无法在 nginx 上禁用同源策略

】无法在nginx上禁用同源策略【英文标题】:Can\'tdisablesameoriginpolicyonnginx【发布时间】:2014-01-2901:34:24【问题描述】:我需要在服务器上禁用同源策略。作为背景:我已经通过禁用网络安全标志启动chrome来验证一切正常。一切正... 查看详情

在 Android Chrome 上禁用同源策略

】在AndroidChrome上禁用同源策略【英文标题】:DisablesameoriginpolicyonAndroidChrome【发布时间】:2012-08-2923:11:32【问题描述】:有没有办法,我搜索了其他帖子并没有找到任何关于android版本的答案。【问题讨论】:【参考方案1】:无... 查看详情

尝试禁用 Chrome 同源策略

】尝试禁用Chrome同源策略【英文标题】:TryingtodisableChromesameoriginpolicy【发布时间】:2014-03-2810:20:26【问题描述】:我正在尝试学习melonJS教程。它说我应该使用以下两种方法之一禁用跨域请求:--disable-web-security--allow-file-access-from... 查看详情

尝试禁用 Chrome 同源策略

】尝试禁用Chrome同源策略【英文标题】:TryingtodisableChromesameoriginpolicy【发布时间】:2014-03-2810:20:26【问题描述】:我正在尝试学习melonJS教程。它说我应该使用以下两种方法之一禁用跨域请求:--disable-web-security--allow-file-access-from... 查看详情

在 Chrome 中禁用同源策略

】在Chrome中禁用同源策略【英文标题】:DisablesameoriginpolicyinChrome【发布时间】:2011-03-0709:06:25【问题描述】:有什么方法可以在Google的Chrome浏览器上禁用Same-originpolicy?【问题讨论】:另见peter.sh/experiments/chromium-command-line-switches... 查看详情

如何在 Safari(Windows 7)中禁用同源策略?

】如何在Safari(Windows7)中禁用同源策略?【英文标题】:HowtodisablesameoriginpolicyinSafari(Windows7)?【发布时间】:2012-06-0809:46:37【问题描述】:我正在尝试在W7站的Safari(5.1.7.)中禁用同源策略。我正在做phonegap应用程序+jquerymobile+使用... 查看详情

webdriver.io 无法为 iframe 禁用同源策略

】webdriver.io无法为iframe禁用同源策略【英文标题】:webdriver.iocan\'tdisablesame-origin-policyforiframe【发布时间】:2017-12-2710:58:48【问题描述】:我需要为我的自动测试禁用同源策略。我在Ubuntu16.04上使用webdriver.io+selenium独立服务器+chrom... 查看详情

禁用同源策略/在 WebKit WebViews 中创建跨域 XMLHttpRequests?

】禁用同源策略/在WebKitWebViews中创建跨域XMLHttpRequests?【英文标题】:DisabletheSameOriginPolicy/makingcrossdomainXMLHttpRequestsinWebKitWebViews?【发布时间】:2011-01-2603:30:50【问题描述】:我想在我自己的嵌入式WebView中禁用XMLHttpRequests的同源... 查看详情

禁用浏览器同源策略的方法

...有的时候会涉及到数据安全的问题,这时候我们可以通过禁用本地浏览器的同源策略来进行跨域的联调ie的禁用同源策略设置,进入ie的网际网路选项设置,然后选择安全性,再选择自订等级,然后下拉,找到「存取跨网络的资... 查看详情

在 TWebbrowser 中禁用同源策略

】在TWebbrowser中禁用同源策略【英文标题】:DisableSameOriginPolicyinTWebbrowser【发布时间】:2014-07-0716:08:32【问题描述】:我目前正在为我们的软件创建一个演示应用程序,它基本上是一个网站,只是在一个与TWebbrowser一起使用的delph... 查看详情

在 Mobile Safari 中禁用同源策略

】在MobileSafari中禁用同源策略【英文标题】:DisableSameOriginPolicyinMobileSafari【发布时间】:2012-08-2210:24:00【问题描述】:我有一个HTML5/JavaScript应用程序,最初是为在某些汽车上运行而编写的。基本上,我需要将我的应用设置为在... 查看详情

如何在 Chrome 扩展程序中禁用同源策略?

】如何在Chrome扩展程序中禁用同源策略?【英文标题】:HowtodisablesameoriginpolicyinChromeextension?【发布时间】:2011-08-2810:27:27【问题描述】:也许有一些设置可以在扩展上下文中禁用它。因为我正在开发一个扩展,所以我应该有责... 查看详情

Chrome 禁用网络安全同源策略不再起作用

】Chrome禁用网络安全同源策略不再起作用【英文标题】:Chromedisablewebsecuritysameoriginpolicynomoreworking【发布时间】:2016-12-1117:14:51【问题描述】:更新我的chrome后,我无法使用--disable-web-security命令禁用网络安全。我尝试了很多选项... 查看详情

JavaFX WebView 禁用同源策略(允许跨域请求)

】JavaFXWebView禁用同源策略(允许跨域请求)【英文标题】:JavaFXWebViewdisableSameoriginpolicy(allowcrossdomainrequests)【发布时间】:2013-04-1909:53:32【问题描述】:我正在开发一个JavaFX应用程序,它主要是一个美化的网页。它是一个桌面应... 查看详情

无法解决的 CORS 问题!如何在 MacOS 上禁用 Chrome 的同源策略?

】无法解决的CORS问题!如何在MacOS上禁用Chrome的同源策略?【英文标题】:UnresolvableCORSissue!HowtodisablethesameoriginpolicyofChromeonMacOS?【发布时间】:2018-05-2523:09:31【问题描述】:有一段时间,我一直面临关于CORS的问题。我正在使用lo... 查看详情

解决firefox下iconfont不显示的问题

http://www.cnblogs.com/freshman0216/p/3825166.html   何为跨域访问,为什么会有跨域限制?一切还得从浏览器的同源策略说起。      同源策略:是浏览器最核心也是最基本的安全功能,如果缺少了同源策略... 查看详情