IFrame究竟能用top.Location对象(跨域)做什么?

时间:2009-07-11 15:02:51

标签: javascript security iframe cross-domain window.location

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

假设我在域名www.bbb.com上有IFrame A,住在域名www.aaa.com的页面内。

IFrame中的页面可以:

  • 将window.top.location与window.location进行比较(以检测它是否被框架化)
  • 调用window.top.location.replace(window.location)重定向到self
  • 调用window.top.location.replace(“任意字符串”)重定向到其他地方

但它不能:

  • Alert,Document.Write,或执行window.top.location.href
  • 的任何输出
  • 将其与任何其他变量连接,或以任何有用的方式使用它
  • 调用window.top.location.reload()

这些只是我能很快找到的。我确定还有其他边缘案例 似乎浏览器不允许使用top.location对象,如果top位于另一个域中,之外的一些列入白名单的内容......

这是否记录在任何地方?
我可以找到这些列入白名单的东西吗? 这是HTML标准,并在所有浏览器中同样实现?或者是这种半随机的实现?

2 个答案:

答案 0 :(得分:8)

这完全由HTML5 standard in section 5.5.3.1指定。

答案 1 :(得分:6)

安全规则与浏览器版本不同。通常较新的版本有更严格的规则,但也更精细调整。

我怀疑旧浏览器可以自由地让你访问顶部框架的位置对象,一些较新的浏览器会完全拒绝它,当前版本可以让你比较位置对象但不能从中读取它们。

您可以找到有关此内容的文档,但它将针对每个浏览器而具体,并针对每个版本的浏览器。据我所知,没有真正的标准。每个浏览器供应商都试图尽可能地保护用户,同时仍然保持网站构建器的一些可用性。一般来说,你不能真正假设任何接近边界的东西在所有浏览器中都有效,或者它将在未来的版本中继续使用。