问题标签 [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.
javascript - 我可以在任何浏览器上禁用 SOP(同源策略)进行开发吗?
我想在我的 Windows 机器上开发 JavaScript。你知道我可以关闭同源策略以便在本地开发的浏览器吗?Firefox 将是最佳选择。
或者,如果您知道我可以将其用于 SOAP/WSDL 站点的代理,那也很棒。
我正在尝试使用JavaSCript SOAP Client。
javascript - jQuery/JavaScript:访问 iframe 的内容
我想使用 jQuery 在 iframe 中操作 HTML。
我想我可以通过将 jQuery 函数的上下文设置为 iframe 的文档来做到这一点,例如:
但是,这似乎不起作用。一些检查表明,除非我等待 iframe 加载,否则其中的变量frames['nameOfMyIframe']
是。undefined
但是,当 iframe 加载时,变量不可访问(我得到permission denied
-type 错误)。
有谁知道解决这个问题的方法?
javascript - 禁用跨站点访问时,是否有任何方法可以绕过 NS_ERROR_DOM_BAD_URI?
我正在为我的大学做 XSS 报告,我正在做一些使用 AJAX 调用外部网页的测试。
我用于此示例的代码非常简单,我的目标案例研究之一是能够通过禁用跨站点的 AJAX 调用外部网页。
笔记:
我只打算在 FireFox 上使用它,我并不关心 IE 的兼容性。
现在这里的问题是未捕获的异常:访问受限 URI 被拒绝 (NS_ERROR_DOM_BAD_URI)被抛出。我一直在四处寻找,我发现绕过这个的最好的信息是使用带有 json 的 jquery,但这不适合我,另一个例子是这个(法语)。
谁能解释我如何做到这一点?还是由于相同的原产地政策而无法解决?
编辑:
如果有人知道,谷歌如何通过谷歌分析发布这些值?或者这个问题只发生在get而不是post?一些帮助会很好。
javascript - 为什么分帧器可以跨域工作,可以有条件地使用分帧器吗?
我最近一直在调查帧破坏代码,并且遇到了一些与我无法理解的同源策略相关的非常奇怪的行为。
假设我在域 A 上有一个页面 Breaker.html,在域 B 上有一个页面 Container.html。示例帧断路器代码将进入 Breaker.html,如下所示:
这将成功地将 Breaker.html 从 Container.html 中分离出来,但我不明白为什么会这样。根据我对同源策略的阅读,根本top.location
不应该访问,因为 Container.html 与 Breaker.html 位于不同的域中。更奇怪的是,似乎 top.location只写:
这对我来说是有问题的,因为我正在尝试编写允许我的页面位于 iframe 中的代码,但前提是它与其父级位于同一域中(或者位于配置的允许域中)。但是,似乎无法确定这一点,因为同源政策拒绝我访问父母的位置。
所以我有两个问题,基本上:
为什么上面的帧中断代码完全起作用?
有没有办法有条件地打破框架,或者唯一能做的检查是是否
top !== self
?(特别是,我希望能够读取域,以便我可以提供允许域的列表;简单地检查我是否在同一个域中并不理想。)
browser - 跨域策略是否限制从同一域的不同协议下载?
跨域策略限制从另一个域下载内容:
但是是否允许通过不同的协议从同一个域下载,它会在日常网络浏览器中工作(有人可以测试)吗?
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)存在本地文件访问问题有关,但我不知道从那里去哪里。
javascript - 如何构建与 Safari/WebKit 中的页面具有相同域的 iframe
场景:我正在编写一个可嵌入的小部件。它采用<script>
标签的形式,它构建了一个 iframe,其中包含它需要显示的所有内容。iframe 没有src
,脚本使用theIframe.contentWindow.document.write()
. 这将保持小部件包含在内,并防止元素 ID 和脚本与嵌入小部件的页面发生冲突。
诀窍:小部件必须能够更改其大小。为此,它设置其包含 iframe 的style.height
. 这需要访问外部页面的 DOM。在Firefox和IE中,这是允许的,因为 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 中使用。
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 中)
html - 解决同源策略问题
我有一个问题,我有一个框架集,其中包含从一个域加载的父框架和来自不同域的包含框架。包含的域还会在加载框架集之前设置一个 cookie。但是,由于大多数浏览器强制执行“相同来源”策略,如果包含的框架与父级不同域,则它不会传递 cookie。
不幸的是,我无法控制父框架(或其 url),并且包含框架的 url 实际上是静态的。因此,将信息传递到所包含站点的唯一方法是通过 cookie。
我想出的唯一解决方案是在父框架中重新加载包含的域,但这首先否定了使用框架的一些价值。
有没有人有更好的解决这个问题的方法?
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
但无法弄清楚......