繁体   English   中英

防止iframe更改父位置

[英]prevent iframe from changing parent location

假设http://a.com/foo包含<iframe src="http://b.com/bar">

有时b.com/bar会突破其框架:顶级窗口将从aff重定向到b.com/bar。 我不知道b.com是如何做到这一点的。

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

如果发生了这种情况,a.com如何阻止这种重定向? 我控制a.com但无法修改b.com。

如果这不是正在发生的事情,我怎样才能找出b.com正在做什么来实现重定向?

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

父可以在iframe上使用sandbox属性:
http://www.w3schools.com/TAgs/att_iframe_sandbox.asp

然后iframe将无法再重定向父级。

可能发生的事情是b.com中的链接具有属性Target ='_ parent'。 这将使window / iframe父更新。

如果您控制b.com - 确保您的所有目标都是_self。

这被称为“框架破坏”。 据说有技术可以阻止这种情况( http://seclab.stanford.edu/websec/framebusting/index.php )。

也许你可以使用ajax或者类似的方式将框架的内容加载到你的页面中而不是iframe?

如果我创建一个将使用cURL来获取b.com的a.com/proxy.php ,那么ajax解决方案可以工作。

优点:

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

缺点:

  • b.com上的cookies / sessions将无法使用
  • b.com可能需要脚本来创建其内容
  • 带宽负担
  • 编写努力使href工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM