Javascript 防止iframe更改父位置

Javascript 防止iframe更改父位置,javascript,html,iframe,Javascript,Html,Iframe,假设包含 有时b.com/bar会脱离其框架:顶级窗口将从a.com/foo重定向到b.com/bar。我不知道b.com是怎么做到的 我认为跨域iframe不可能干扰父级,除非父级通过postMessage进行合作。更改窗口位置是否免于此限制 如果是这样的话,a.com如何防止这种重定向?我控制a.com,但无法修改b.com 如果不是这样的话,我怎样才能知道b.com是如何实现重定向的呢 强制b.com将其自身加载到新窗口中,或破坏其对top或父对象的访问是可以接受的。b.com行为的其他降

假设包含

有时b.com/bar会脱离其框架:顶级窗口将从a.com/foo重定向到b.com/bar。我不知道b.com是怎么做到的

我认为跨域iframe不可能干扰父级,除非父级通过postMessage进行合作。更改窗口位置是否免于此限制

如果是这样的话,a.com如何防止这种重定向?我控制a.com,但无法修改b.com

如果不是这样的话,我怎样才能知道b.com是如何实现重定向的呢


强制b.com将其自身加载到新窗口中,或破坏其对
top
父对象的访问是可以接受的。b.com行为的其他降级可能是可以接受的。

可能发生的情况是b.com内部的链接具有属性Target=''u parent'。 这将使窗口/iframe父对象更新


如果你控制了b.com-确保你所有的目标都是自我的。

这就是所谓的“框架破坏”。应该有一些技术可以阻止这种情况()


也许你可以使用ajax或类似的工具来代替iframe,将框架的内容加载到你的页面中?

如果我创建
a.com/proxy.php
,它将使用cURL获取b.com,那么ajax解决方案就可以工作了

优点:

  • 可以更改或删除任何脚本
  • 可以调整b.com内容(预览模式)
  • 可以绕过跨域iframe限制
缺点:

  • b.com上的Cookie/会话将不可用
  • b、 com可能需要脚本来创建其内容
  • 带宽负担
  • 为使HREF工作而进行的编码工作

    • 家长可以在
      iframe
      上使用
      sandbox
      属性:


      然后,
      iframe
      将不再能够重定向父对象。

      很有趣,尽管基本的反框架破坏204技巧在我的FF11中不起作用(所有导航都被阻止)。页面最终将获胜;即使它不能破解你的框架破坏者,它也可以决定隐藏自己或重定向到令人反感的东西。