【问题标题】:Get height of iframe with external URL使用外部 URL 获取 iframe 的高度
【发布时间】:2011-05-02 18:35:15
【问题描述】:

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

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

我可以获取加载到 iframe 中的第一个页面的高度(使用 PHP),但无法获取后续页面高度,因为无法知道 iframe 中的 url/位置更改为什么。

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

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

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

【问题讨论】:

  • 是的,我看到了这个问题。但在这里我强调“所有解决方案都必须来自父框架”。我看到的大多数建议都涉及远程页面上的某种编码。

标签: javascript security iframe


【解决方案1】:

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

虽然在嵌入页面时让嵌入站点知道第三方网页的高度似乎无害,但这可能会将浏览器用户想要保密的信息泄露给嵌入站点。例如,http://www.facebook.com/ 根据您是否登录而呈现不同,因此如果我的网站可以计算出<iframe src="http://www.facebook.com/"> 的高度,那么我可以确定您是否是 facebook 用户,而您可能不会不想让我知道。

信息泄露将类似于臭名昭著的CSS History Leak,因为它会通过“链接”到第三方网站(在这种情况下使用 iframe 而不是链接)来揭示用户与第三方网站的关系信息)。浏览器供应商必须堵住 CSS 历史漏洞,所以我怀疑如果您可以计算出在任何浏览器的 iframe 中呈现的第三方网站的高度,供应商也必须修复它。

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

【讨论】:

  • 嗯.. 我和其他 5 亿人 ;-) 你所拥有的只是匿名信息,即有人已登录。
  • 不完全是。我知道您(查看我网页的人)已登录。让我有机会更好地针对您进行网络钓鱼攻击。代替 facebook,我可以偷偷找出你使用 37 个不同的银行网站中的哪一个。请注意,泄露的信息类似于 CSS 历史泄露,它引起了不小的轰动和争相修复,如果您不熟悉该信息,请参阅 blog.mozilla.com/security/2010/03/31/…
  • 控制父框架,您已经知道加载到 iframe 中的第一个 url(facebook 或银行)。一开始就没有秘密。这与 CSS 历史泄漏(感谢链接)不同,但更类似于知道用于退出您的站点的超链接。您可能会得到的唯一“额外”是用户在远程站点登录......这对您来说并不奇怪,因为他们正在使用您提供给 iframe 的 url。换句话说,无论如何,这些信息都是一个合理的猜测。
  • @Mark Flint 我并没有说它与 CSS 历史泄漏相同,只是相似。我真的看不出与知道用于离开您网站的链接有什么相似之处。您说您可能得到的唯一额外信息是用户在远程站点上登录 - 对您个人而言可能看起来是一件小事,但它仍然是用户不由自主的信息泄露向嵌入站点的所有者制作,因此浏览器应该(并且是!)阻止。我不明白你关于这是“不足为奇”和“公平猜测”的评论。
  • 好吧,“公平猜测”我的意思是,如果你提供一个指向 www.facebook.com 的 iframe,那么你可以假定使用它的人会登录到 Facebook。这是一个合理的猜测。关于信息泄露——我并不是说这是微不足道的——只是想了解风险。撰写 Mozilla 安全博客的人说,诸如 CSS 历史泄露之类的问题会导致“更多偏执的网民”。要说没有资格就存在风险,这就像说不要走出你的前门,因为那里有风险。这是关于安全性与可用性的古老辩论 :-)
猜你喜欢
  • 2017-04-17
  • 1970-01-01
  • 2014-08-10
  • 2013-09-16
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 1970-01-01
相关资源
最近更新 更多