问题标签 [same-origin-policy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
33780 浏览

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

我想在我的 Windows 机器上开发 JavaScript。你知道我可以关闭同源策略以便在本地开发的浏览器吗?Firefox 将是最佳选择。

或者,如果您知道我可以将其用于 SOAP/WSDL 站点的代理,那也很棒。

我正在尝试使用JavaSCript SOAP Client

0 投票
15 回答
715304 浏览

javascript - jQuery/JavaScript:访问 iframe 的内容

我想使用 jQuery 在 iframe 中操作 HTML。

我想我可以通过将 jQuery 函数的上下文设置为 iframe 的文档来做到这一点,例如:

但是,这似乎不起作用。一些检查表明,除非我等待 iframe 加载,否则其中的变量frames['nameOfMyIframe']是。undefined但是,当 iframe 加载时,变量不可访问(我得到permission denied-type 错误)。

有谁知道解决这个问题的方法?

0 投票
0 回答
14035 浏览

javascript - 禁用跨站点访问时,是否有任何方法可以绕过 NS_ERROR_DOM_BAD_URI?

我正在为我的大学做 XSS 报告,我正在做一些使用 AJAX 调用外部网页的测试。

我用于此示例的代码非常简单,我的目标案例研究之一是能够通过禁用跨站点的 AJAX 调用外部网页。

笔记:

我只打算在 FireFox 上使用它,我并不关心 IE 的兼容性。

现在这里的问题是未捕获的异常:访问受限 URI 被拒绝 (NS_ERROR_DOM_BAD_URI)被抛出。我一直在四处寻找,我发现绕过这个的最好的信息是使用带有 json 的 jquery,但这不适合我,另一个例子是这个(法语)

谁能解释我如何做到这一点?还是由于相同的原产地政策而无法解决?

编辑

如果有人知道,谷歌如何通过谷歌分析发布这些值?或者这个问题只发生在get而不是post?一些帮助会很好。

0 投票
3 回答
4037 浏览

javascript - 为什么分帧器可以跨域工作,可以有条件地使用分帧器吗?

我最近一直在调查帧破坏代码,并且遇到了一些与我无法理解的同源策略相关的非常奇怪的行为。

假设我在域 A 上有一个页面 Breaker.html,在域 B 上有一个页面 Container.html。示例帧断路器代码将进入 Breaker.html,如下所示:

这将成功地将 Breaker.html 从 Container.html 中分离出来,但我不明白为什么会这样。根据我对同源策略的阅读,根本top.location不应该访问,因为 Container.html 与 Breaker.html 位于不同的域中。更奇怪的是,似乎 top.location只写

这对我来说是有问题的,因为我正在尝试编写允许我的页面位于 iframe 中的代码,但前提是它与其父级位于同一域中(或者位于配置的允许域中)。但是,似乎无法确定这一点,因为同源政策拒绝我访问父母的位置。

所以我有两个问题,基本上:

  1. 为什么上面的帧中断代码完全起作用?

  2. 有没有办法有条件地打破框架,或者唯一能做的检查是是否top !== self?(特别是,我希望能够读取域,以便我可以提供允许域的列表;简单地检查我是否在同一个域中并不理想。)

0 投票
2 回答
549 浏览

browser - 跨域策略是否限制从同一域的不同协议下载?

跨域策略限制从另一个域下载内容:

但是是否允许通过不同的协议从同一个域下载,它会在日常网络浏览器中工作(有人可以测试)吗?

0 投票
3 回答
4844 浏览

javascript - 如何将一个本地文件的同源策略违规绕过到另一个本地文件?

我正在尝试使用未托管在服务器上的文件来半重新创建 Mozilla对 JavaScript ++的演示使用。<video><canvas>

加载我的文档会导致错误控制台报告此错误:

错误:未捕获的异常:[异常...“安全错误”代码:“1000”nsresult:“0x805303e8(NS_ERROR_DOM_SECURITY_ERR)”位置:“file:///media/disk/javascript/html5/chromakey/chromakey1.htm 行: 23"]

这是第 23 行:

它试图从我之前复制一帧视频的画布中获取图像数据,如下所示:

this.inputElement引用这个(相当无聊的)元素的地方:

有没有办法在不使用 JAR 签署我的代码的情况下克服这个错误?

我认为这与 Firefox 的同源策略(https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript)存在本地文件访问问题有关,但我不知道从那里去哪里。

0 投票
2 回答
5951 浏览

javascript - 如何构建与 Safari/WebKit 中的页面具有相同域的 iframe

场景:我正在编写一个可嵌入的小部件。它采用<script>标签的形式,它构建了一个 iframe,其中包含它需要显示的所有内容。iframe 没有src,脚本使用theIframe.contentWindow.document.write(). 这将保持小部件包含在内,并防止元素 ID 和脚本与嵌入小部件的页面发生冲突。

诀窍:小部件必须能够更改其大小。为此,它设置其包含 iframe 的style.height. 这需要访问外部页面的 DOM。在FirefoxIE中,这是允许的,因为 iframe 的文档和外部文档被认为共享一个来源。

扭曲:然而,在Safari中,这两个文档被认为共享一个来源。内部文档被认为是 at about:blank,而外部文档显然使用不同的协议和“域”(如果blank可以被认为是域)。

问题:如何以编程方式构建 iframe,其文档 Safari/WebKit 将考虑与创建它的窗口的文档具有相同的来源?


编辑:经过进一步的实验,我找不到以编程方式创建一个 iframe 的方法about:blank,无论我是否更改它的内容,它的位置都不是。

如果我用 来创建框架document.createElement(),给它一个src指向同一来源的真实 HTML 资源,称为“foo.html”,document.body.appendChild()Safari 的控制台会按预期在 DOM 中显示元素,但页面的内容不会出现,并且该文档在侧边栏中列为“about:blank”。

如果我直接在页面中包含 iframe 的 HTML,则会出现的内容foo.html,并且“foo.html”会出现在侧边栏中。

如果我使用 插入 HTML document.write(),我会得到与使用相同的结果document.body.appendChild()

两个程序化版本都可以在 Firefox 中使用。

0 投票
3 回答
604 浏览

security - 这个防止跨站点请求伪造的想法中有任何逻辑漏洞吗?

我已经阅读了几个依赖于向响应添加更多令牌的 XSRF 解决方案,这些解决方案确实有助于保护仅在 POST 上运行的代码。

即,这将是依赖于响应 HTTP GET 的页面的一步攻击

但是使用更好的库(如 jquery),编写恶意 javascript XmlHttpRequest 脚本变得更加容易,可以进行两步攻击(GET,解析 Anti-XSRF 视图状态/查询字符串/额外 cookie 等),然后提交 POST。(或者是吗?我不担心 AES 很快就会被破解,我是否应该担心针对 HTTP POST 操作的 2 步 XSRF 攻击变得像上面显示的 img 标签攻击一样容易?)

我想一步攻击主要可以通过不对 GET 做任何敏感的事情来阻止,这两种攻击都可以通过要求网站用户解决 CAPTCHA 来阻止,然后它会产生一个查询字符串令牌,所有 URL 都需要这个令牌会议的其余部分?

到目前为止,它似乎只有在 CAPTCHA 失败时才会失败,例如 OCR 软件是否可以读取文本或是否有机械土耳其人组件。

编辑:考虑到的特定攻击是带有 xhr javascript 或图像标签的电子邮件。因此代码将在电子邮件客户端的浏览器或从本地文件系统加载的 HTML 页面中执行。为简单起见,我认为该站点没有 XSS 漏洞(即恶意用户没有机会将其 HTML 注入站点作为响应发送的 HTML 中)

0 投票
4 回答
6735 浏览

html - 解决同源策略问题

我有一个问题,我有一个框架集,其中包含从一个域加载的父框架和来自不同域的包含框架。包含的域还会在加载框架集之前设置一个 cookie。但是,由于大多数浏览器强制执行“相同来源”策略,如果包含的框架与父级不同域,则它不会传递 cookie。

不幸的是,我无法控制父框架(或其 url),并且包含框架的 url 实际上是静态的。因此,将信息传递到所包含站点的唯一方法是通过 cookie。

我想出的唯一解决方案是在父框架中重新加载包含的域,但这首先否定了使用框架的一些价值。

有没有人有更好的解决这个问题的方法?

0 投票
3 回答
2547 浏览

javascript - 谷歌 AJAX 库 API 是否绕过同源策略?

从:https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript

那么为什么不执行同源策略呢?,当一个有这样的脚本标签时:

p>

我确定我错过了“某些东西”,我已经阅读了很多次
http://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy
但无法弄清楚......