web-dev-qa-db-ja.com

親iFrameコンテンツの子iFrameハッシュ検証

次のシナリオを検討してください。

アリスは、イニテックで働いている間にビクターのウェブサイトを閲覧したいと考えています。ビクターのウェブサイトは、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が親ウィンドウの内容を確認することは可能ですか?

  • anyCORS設定を使用していますか?
  • 読み取り専用アクセスを許可しながら?
  • 親ウィンドウのiFrameのコンテンツへのアクセスを制限していますか?

クライアント側のJS検証 が信頼できないキャッシュから(信頼できる接続、MtMなしで)に関する以前の議論がありますが、この状況では、フェッチされているマテリアルによる検証が必要です。 iFrames to sandbox untrusted code の使用に関する投稿も多数あります。ただし、iFrameのサンドボックス化の質問は、そのテーマに関するほとんどの外部の文献(フレームバスティングなど)と同様に、子を信頼する親ウィンドウを中心に展開する傾向があります。

さらに、イブのサーバーは積極的にプロセスに参加できません。彼女は静的なHTML、JS、CSSファイルのみを提供できます。ビクターはイブのサーバーを介して情報をプロキシすることはできません。彼はのみ自分のまたはサードパーティのサーバーと対話できます。

8
Indolering
  • cORS構成を使用していますか?

EveがCORSヘッダーをAccess-Control-Allow-Origin "victor.alt"に設定した場合、Victorは取得したHTMLのコンテンツを検証し、参照されているすべてのスクリプトも検証できます。

  • 読み取り専用アクセスを許可しながら?
  • 親ウィンドウのiFrameのコンテンツへのアクセスを制限しながら?

これらがどちらも存在しない場合、iFrameは、同じドメインにない限り、別のiFrameのコンテンツを読み取ることができません。

ただし、プライベートにしたいユーザー情報をVictorからサンドボックス化されたiFrameにプッシュし、フレーム間の通信に window.postMessage を使用できます。 Victorは2つの間のアクティビティを監視して、情報が漏洩していないことを確認できます。

2
Philipp Gayret