次のシナリオを検討してください。
アリスは、イニテックで働いている間にビクターのウェブサイトを閲覧したいと考えています。ビクターのウェブサイトは、InitechのDNSがピアリングしない代替ドメインネームシステムでホストされています。 Eve(自由でオープンな知識の交換を促進したい)は、ドメイン名解決とURLマスキングを実行するJSを含むWebページをホストし、Aliceが_victor.eve.tld
_にアクセスすると、iFrameが静的に基づいて_victor.alt
_をロードするようにします。ビクターが_victor.alt
_ DNSレコードで指定したIPアドレス。
シームレスなドメイン名マスキングのために、ビクターは自分のサイトのヘッダーにCORS承認を配置して、単一のOriginポリシーをダンスする必要があります。しかし、ビクターは、マイケルがイブのWebサーバーに侵入し、悪意のあるJSをイブのWebページ(iFrameの親)に仕掛けようとしていると疑っています。ビクターは、マイケルがCORS許可を有効にする前に、親フレームの内容を変更していないことを確認したいと考えています。
ビクターはイブのサイトのコピーを所有しており、イブのサーバーに連絡せずに資料のハッシュを含めることができるため、彼が読み取りアクセス権を持っている場合は、コンテンツに一致させることができます。 MichealはInitechサーバーにアクセスできず、両方のサイトからの接続はTLSを使用して保護されます。Michealが中間者攻撃を実行できないと仮定します。
IFrameが親ウィンドウの内容を確認することは可能ですか?
クライアント側のJS検証 が信頼できないキャッシュから(信頼できる接続、MtMなしで)に関する以前の議論がありますが、この状況では、フェッチされているマテリアルによる検証が必要です。 iFrames to sandbox untrusted code の使用に関する投稿も多数あります。ただし、iFrameのサンドボックス化の質問は、そのテーマに関するほとんどの外部の文献(フレームバスティングなど)と同様に、子を信頼する親ウィンドウを中心に展開する傾向があります。
さらに、イブのサーバーは積極的にプロセスに参加できません。彼女は静的なHTML、JS、CSSファイルのみを提供できます。ビクターはイブのサーバーを介して情報をプロキシすることはできません。彼はのみ自分のまたはサードパーティのサーバーと対話できます。
EveがCORSヘッダーをAccess-Control-Allow-Origin "victor.alt"
に設定した場合、Victorは取得したHTMLのコンテンツを検証し、参照されているすべてのスクリプトも検証できます。
これらがどちらも存在しない場合、iFrameは、同じドメインにない限り、別のiFrameのコンテンツを読み取ることができません。
ただし、プライベートにしたいユーザー情報をVictorからサンドボックス化されたiFrameにプッシュし、フレーム間の通信に window.postMessage を使用できます。 Victorは2つの間のアクティビティを監視して、情報が漏洩していないことを確認できます。