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

Dan*_*ola 19 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标准,并在所有浏览器中同样实现?或者是这种半随机的实现?

Guf*_*ffa 6

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

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

您可以找到有关此文档的文档,但它将特定于每个浏览器并且特定于每个版本的浏览器.据我所知,没有真正的标准.每个浏览器供应商都试图尽可能地保护用户,同时仍然保持网站构建器的一些可用性.通常,您不能真正假设任何靠近边框的内容适用于所有浏览器,或者它将在未来版本中继续使用.