使用外部网址获取iframe的高度

Owe*_*wen 9 javascript security iframe

我必须在我的页面上的iframe中包含一个外部whitelabel网站.外部网站上有许多页面,它们的高度差异很大.

我需要调整我的iframe的高度来适应这个.

我可以将第一页的高度加载到iframe中(使用PHP),但无法获得后续页面高度,因为无法知道iframe中url/location的变化.

由于这是iframe中的外部URL,因此通常的安全限制适用,因此所有解决方案必须来自父框架.解决方案必须至少可以在FF和IE上使用.

我能想到的唯一想法是测试滚动条是否在iframe上可见,但在这些情况下这似乎是不可能的.

如果有人可以证明我错了,或者有任何其他javascript/ajax/php跨浏览器解决方案,我很乐意听到它.

Day*_*Day 8

这是不可能做到,因为浏览器的安全模型的这一点.如果可能,这将是一个安全问题,必须修复.

虽然嵌入在页面中时让嵌入站点知道第三方网页的高度似乎是无害的,但这可能会将信息泄漏到浏览器用户想要保密的嵌入站点.例如,http://www.facebook.com/根据您是否登录而呈现不同,所以如果我的网站可以达到高度,<iframe src="http://www.facebook.com/">那么我可以判断您是否是Facebook用户,你可能不想让我知道.

信息泄露类似于臭名昭着的CSS历史泄漏,因为它只是通过"链接"到该网站(在这种情况下使用iframe而不是链接)显示用户与第三方网站的关系信息.浏览器供应商不得不插入CSS History Leak,因此我怀疑如果你在任何浏览器中计算出在iframe中呈现的第三方网站的高度,供应商也必须解决这个问题.

泄露的信息可以是使用其cookie为用户呈现的页面高度可以推断的任何内容(即使在不同域的页面内的iframe中呈现,浏览器也会发送该信息).具体风险完全取决于被"攻击"的嵌入式网站的性质.例如,我可以通过获取https://stackoverflow.com/reputation的高度来了解访问我网站的堆栈流量活动有多少,这对于不同的用户是不同的.

  • 不完全是.我知道您,查看我的网页的人已登录.让我有机会更好地针对您的网络钓鱼攻击.我可以秘密地找出你使用的37个不同银行网站中的哪一个,而不是facebook.请注意泄露的信息类似于CSS History Leak,这引起了很大的争议并且需要修复,请参阅http://blog.mozilla.com/security/2010/03/31/plugging-the-css-history-泄漏/如果你不熟悉那个. (3认同)