web-dev-qa-db-ja.com

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

どういうわけか、Google +プラス1ウィジェットにカーソルを合わせると、ツールチップタイプの取引が<iframe>要素が含まれる要素。これを確認するためにDOMを検査しました。*

iframe boundaries

そう:

  1. 何?どうやって!?

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

*更新:私が見たのは、tooltip-yメッセージが秒であったこと、動的に作成されたiframe

145
Alan H.

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

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

攻撃の観点から見ると、これはUI-RedressよりもXSS(クロスサイトスクリプティング)に似ています。 Googleにあなたのウェブサイトへのアクセスを許可している場合、ユーザーのCookieをハイジャックしたり、あなたのウェブサイトに対してXmlHttpRequestsを実行する可能性があります。

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

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

181
rook

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

3
xrd