ウィジェットを作成して別のドメインのサイトに埋め込んだ場合、ウィジェット<iframe>
は親ページに関するどのくらいのデータを読み取ることができますか?
明らかに DOM アクセスはありませんが、親ページに親があるかどうか、または親ページの URL は何かなど、他の情報へのアクセスはありますか?
ウィジェットを作成して別のドメインのサイトに埋め込んだ場合、ウィジェット<iframe>
は親ページに関するどのくらいのデータを読み取ることができますか?
明らかに DOM アクセスはありませんが、親ページに親があるかどうか、または親ページの URL は何かなど、他の情報へのアクセスはありますか?
通常、別のドメインから提供される iframe のコンテンツは、どのような方法でも親にアクセスできません。これは、別のブラウザー タブでページを読み込むようなものです。
ただし、別のドメインから提供された場合でも、親 DOM へのアクセスを許可する中間者攻撃の可能性があります。これは思ったより簡単です。公衆 Wi-Fi アクセス ポイントを管理制御できる人なら誰でもこの攻撃を実行できます (スターバックス、ホテル、空港を考えてみてください)。
HTML5 iframe サンドボックス属性を使用して、この攻撃から保護することができます -- 以下を参照してください。
中間者攻撃は次のように機能します。ページがhttp://yoursite.comから読み込まれ、iframe がhttp://badsite.orgに移動するとします。
最初のhttp://badsite.orgはhttp://yoursite.com/badpageにリダイレクトされます
これは、中間者攻撃が必要なステップです。攻撃者は、ユーザーと yoursite.com の間を行き来できるか、DNS ルックアップへの回答を制御できる必要があります。目標は、実際のサイトではなく、攻撃者のサイトからhttp://yoursite.com/badpageのコンテンツを提供することです。
攻撃者は、(偽の) http://yoursite.org/badpageから好きな悪意のあるコードを提供でき ます。これはメイン ページと同じドメインにあるため、親 DOM にアクセスできます。
HTML5 iframe サンドボックス属性は、これを回避する方法のようです。仕様を読むことができますが、最良の説明はここにあるかもしれません。
これは、Chrome、IE10、FireFox、Safariでサポートされているようです。
仕様には、「allow-same-origin」属性が設定されていない場合、「コンテンツは一意のオリジンからのものとして扱われる」と記載されています。これにより、ブラウザーが URL を認識していても、子 iframe が親の DOM のどの部分にもアクセスできなくなります。
サンドボックスでは、スクリプト、ポップアップ、トップ レベル URL を変更する機能などを無効にすることもできます。
少しGoogle検索を行ったところ、通常、コンテンツが別のドメイン(同じオリジンポリシー)である場合、iframeの内部ガットにアクセスできないことがわかりましたが、それを回避する方法を提供する記事がここにあります.