Google+ +1ウィジェットはどのようにしてiframeから抜け出しますか?


145

どういうわけか、Google +プラスワンウィジェットにカーソルを合わせる<iframe>と、それが含まれている要素よりも明らかに大きいツールチップタイプの取引が導入される可能性があります。これを確認するためにDOMを調べました。*

iframeの境界

そう:

  1. 何?どうやって!?

  2. 悪意を持って使用された場合、これはクリックジャックの大きな機会ではありませんか?(これらのソーシャルウィジェットに対してMITMを実行している人を想像してください!)

*更新:私が見たのは、tooltip-yメッセージが 2番目に動的に作成されたというものiframeでした。

回答:


181

Google +1ウィジェットは、を構築しているWebサイト実行されるJavaScriptですiframe。このJavaScriptウィジェットはWebサイトのコンテキスト内で実行されるため、iframeのOrigin継承ルールによる制約を受けません。したがって、このJavaScriptウィジェットは、単純なように見えても、親サイトで必要なDOMイベントを設定できiframeます。

もう1つ、なぜGoogleはiframedivページ上で単に生成しないのはなぜですか?リンクはから発生しているiframeため、CSRF(クロスサイトリクエストフォージェリ)トークンをリクエストに埋め込むことができ、親サイトはこのトークンを読み取ってリクエストを偽造することができません。つまり、これはiframe、元の継承ルールに基づいて悪意のある親から自分自身を保護するCSRF対策です。

攻撃の観点から見ると、これはUI-RedressよりもXSS(クロスサイトスクリプティング)に似ています。あなたはGoogleにあなたのウェブサイトへのアクセスを許可しており、ユーザーのCookieをハイジャックしたりXmlHttpRequests、選択した場合はウェブサイトに対してパフォーマンスを発揮したりする可能性があります(ただし、悪意のある富裕層を訴えます)。

この状況では、Googleを信頼する必要がありますが、Googleはあなたを信頼していません。

これらのWebバグのプライバシーへの影響を軽減する方法があります


素晴らしいこと–私はあなたのコメントre:XSSに感謝します。しかし、私はまだ何かについてはよくわかりません。問題のコンテンツはに含まれていないよう<iframe>ですが、これは正しいと思われる可能性があります(その可能性について説明しています)。しかし、DOMの検査から、これが事実であるとは思われません。そして、それは私の名前とGmailアドレスを悪意のある親に公開します(秒に包まれない限りiframe)!
アランH.

3
@Alan H.ええ、動的なiframeを使って奇妙なことをやっています +1をクリックすると、コメントを追加するウィンドウが表示されます。firebugをロードしてその要素を検査すると、plusone.google.com / u / 0 / _ / + / fastbutton?url = ...のiframe srcが取得されます。このiframeには、google +に送信するためのCSRFトークンが含まれています。
2011

場合によっては、Cookieをhttponlyで設定することにより、Cookieのハイジャックを回避できます。
seppo0010 2011

1
@ seppo0010ええ、しかしそれはXHRを止めません。
2009

3

GoogleはiFrameを使用して、「漏れやすい標準DIV」を防止しています。彼らのクロージャライブラリダイアログは同じことをします。他のコンテンツが+1ボタンに流れ込むことができないようにするためです。 http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/dialog.html


Rookが彼の回答で説明したように、<iframe>は、Google +1ウィジェットコードを使用するサイトがCSRF攻撃を使用してリンク自体をクリックするのを防ぐために使用されます(サイトの+1の評価を人為的に向上させます)。これは、Googleがあなたを信頼していない部分です。
ミッコランタライネン2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.