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

时间:2010-10-30 10:17:35

标签: javascript security iframe

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

我需要调整iframe的高度以适应这种情况。

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

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

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

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

1 个答案:

答案 0 :(得分:8)

由于浏览器的安全模型,这样做不可能。如果可能的话,这将是一个安全问题,必须修复。

尽管嵌入网站嵌入页面时让嵌入网站知道第三方网页的高度似乎无害,但这可能会将信息泄露给浏览器用户想要保密的嵌入网站。例如,http://www.facebook.com/呈现的方式会有所不同,具体取决于您是否已登录,因此如果我的网站可以计算<iframe src="http://www.facebook.com/">的高度,那么我可以判断您是否是Facebook用户,你可能不想让我知道。

信息泄露与臭名昭着的CSS History Leak类似,因为它只是通过“链接”到该网站来揭示用户与第三方网站的关系信息(在这种情况下使用iframe代替一条链接)。浏览器供应商不得不插入CSS History Leak,所以我怀疑如果你计算出在任何浏览器中在iframe中呈现的第三方网站的高度,供应商也必须解决这个问题。 / p>

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