Google+ +1小部件如何脱离其iframe?


145

不知何故,悬停在Google+信息加一插件可以引入一个提示型协议,显然比越大<iframe>在包含它元件。我已经检查了DOM来确认这一点。*

iframe边界

所以:

  1. 什么?怎么样!?

  2. 如果被恶意使用,这是否不是大量的点击劫持机会?(想象一下有人为这些社交小部件执行了MITM!)

*更新:我所看到的是,提示-Y的信息是在第二,动态创建iframe

Answers:


181

Google +1小部件是JavaScript,可在构建的网站运行iframe。该JavaScript小部件在您网站的上下文中运行,因此不受iframe原产继承规则的限制。因此,即使它看起来很简单,此JavaScript小部件也可以设置其在父站点上想要的任何DOM事件iframe

另一件事,为什么Google使用iframe?为什么不只div在页面上生成一个?好吧,因为链接起源于iframe,所以CSRF(跨站点请求伪造)令牌可以嵌入到请求中,并且父站点无法读取此令牌并伪造请求。因此,这iframe是一种反CSRF措施,它依赖于Origin Inheritance规则来保护自己免受恶意父项的侵害。

从攻击角度看,这更像XSS(跨站点脚本)而不是UI-Redress。您授予Google访问您的网站的权限,如果他们愿意,他们可以劫持用户的Cookie或XmlHttpRequests对您的网站进行攻击(但随后人们会起诉他们恶意和富裕)。

在这种情况下,您必须信任Google,但Google不信任您。

有一些方法可以减轻这些Web错误对隐私的影响


很棒的东西–感谢您对XSS的评论,这很有意义。但是我还是不确定。有问题的内容似乎不在内<iframe>,您建议这可能是正确的(并说明如何可能)。但是从检查DOM来看似乎并非如此。它将把我的名字和Gmail地址暴露给恶意的父母(除非在一秒钟之内iframe)!
艾伦·H。

3
@Alan H.是的,他们正在使用动态iframe做一些奇怪的事情。如果您点击+1,您会看到添加评论的窗口。如果您加载Firebug并检查该元素,则将获得plusone.google.com/u/0 / _ / + / fastbutton?url = ...的iframe src。此iframe包含用于提交给google +的CSRF令牌。

在某些情况下,可以通过将Cookie设置为httponly来避免Cookie的劫持。
seppo0010 2011年

1
@ seppo0010是的,但这不会阻止XHR。
rook

3

Google使用iFrame来防止“泄漏的标准DIV”。他们的关闭库对话框执行相同的操作。可能只是因为其他内容无法渗入+1按钮。 http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/dialog.html


正如Rook在回答中所解释的那样,<iframe>用于防止使用Google +1小部件代码的网站使用CSRF攻击本身单击链接(并人为地提高网站的+1评分)。那就是Google不信任您的部分。
Mikko Rantalainen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.