假设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将自身加载到新窗口或破坏其对top
或parent
对象的访问权限是可以接受的。 b.com行为的其他降级可能是可以接受的。
答案 0 :(得分:1)
家长可以使用sandbox
上的iframe
属性:
http://www.w3schools.com/TAgs/att_iframe_sandbox.asp
然后iframe
将无法重定向父级。
答案 1 :(得分:0)
可能发生的事情是b.com内的链接具有属性Target ='_ parent'。 这将使窗口/ iframe父更新。
如果您控制b.com - 确保您的所有目标都是_self。
答案 2 :(得分:0)
这称为“破坏帧”#。据说有一些技术可以阻止它(http://seclab.stanford.edu/websec/framebusting/index.php)。
也许您可以使用ajax或类似方法将框架的内容加载到您的网页中而不是iframe?
答案 3 :(得分:0)
如果我创建a.com/proxy.php
并使用cURL来获取b.com,则ajax解决方案可以正常工作。
优点:
缺点: