Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IFrame可以对top.Location对象(跨域)做什么?_Javascript_Security_Iframe_Cross Domain_Window.location - Fatal编程技术网

Javascript IFrame可以对top.Location对象(跨域)做什么?

Javascript IFrame可以对top.Location对象(跨域)做什么?,javascript,security,iframe,cross-domain,window.location,Javascript,Security,Iframe,Cross Domain,Window.location,关于window.top.Location对象的跨域策略中有一个非常特殊的边缘情况 假设我有一个IFrame A,在域www.bbb.com中,生活在域www.aaa.com中的一个页面中 IFrame内的页面可以: 将window.top.location与window.location进行比较(以检测是否正在对其进行帧处理) 调用window.top.location.replace(window.location)重定向到self 调用window.top.location.replac

关于window.top.Location对象的跨域策略中有一个非常特殊的边缘情况

假设我有一个IFrame A,在域www.bbb.com中,生活在域www.aaa.com中的一个页面中

IFrame内的页面可以:

  • 将window.top.location与window.location进行比较(以检测是否正在对其进行帧处理)
  • 调用window.top.location.replace(window.location)重定向到self
  • 调用window.top.location.replace(“任意字符串”)重定向到其他地方
但它不能:

  • 对window.top.location.href发出警报、记录、写入或执行任何类型的输出
  • 将它连接到任何其他变量中,或以任何有用的方式使用它
  • 调用window.top.location.reload()
这些正是我能很快找到的。我肯定还有其他边缘案例。
似乎浏览器不允许使用top.location对象,如果top位于另一个域中,,除了一些列在白名单中的内容,

是否在任何地方记录了此信息?
我能找到这些白名单上的东西是什么吗?

这是否在HTML标准中,并且在所有浏览器中都是平等实现的?或者这种实现是半随机的?

安全规则与浏览器版本不同。一般来说,新版本有更严格的规则,但也有更精细的调整

我怀疑较旧的浏览器会允许您自由访问顶部框架的位置对象,稍新的浏览器会完全拒绝它,而当前的版本允许您比较位置对象,但不读取它们


您可能会找到关于此的文档,但它对于每个浏览器都是特定的,对于每个版本的浏览器都是特定的。据我所知,这方面没有真正的标准。每个浏览器供应商都试图尽可能地保护用户,同时仍然为网站建设者保留一些可用性。一般来说,你不能真的假设任何靠近边框的东西在所有浏览器中都能工作,或者在将来的版本中都能继续工作。

这正是由指定的。

如果你确实找到了答案,特别是“这是在任何地方记录的”,请发布它。在过去,我不得不使用IE跨域安全限制,而且似乎总是能学到关于你能做什么和不能做什么的知识。我从来没有看过任何文档。当然,但到目前为止我还没有发现任何东西(因此这里的问题是)你所说的“比较位置对象但不从中读取”是什么意思?嵌入页面如何在不知道顶部页面的url的情况下比较其位置?@Pacerier:因为location属性是一个对象,它包含页面的url作为
href
属性。您可以比较location对象,即使它们包含来自不同域的URL,但当URL来自不同域时,您无法从location对象读取
href
属性。感谢澄清=)有哪些已知方法可以绕过此限制并获取“容器页”的URL,没有可靠的方法可以绕过它,因为这是一个安全限制。如果你在某些浏览器中发现了一个安全漏洞,很有可能在将来的更新中会被插入。我希望规范更具可读性。“除了以下例外情况:href setter,如果条目设置对象指定的负责浏览上下文熟悉与位置对象关联的浏览上下文,“什么???