3

多数のパートナー Web サイトで使用する iframe を開発しています。

それらの Web サイトでのみ使用でき、他のユーザーは使用できないことを確認する方法はありますか?

Web サイトの URL に必須のクエリ文字列を追加するつもりでした。各パートナーは、クエリ文字列に異なる値を持ち、それを使用して許可されたドメインを検索します

ただし、iframe をホストしているサイトのトップ レベル ドメインを知る方法はありますか?

おそらく、これは iFrame の http リクエストで送信されませんか? それとも、私はそれを見ることができませんでしたか?

または、javascript からドメインを送信する必要がありますか?

何かアドバイス?

4

4 に答える 4

6

ただし、iframe をホストしているサイトのトップ レベル ドメインを知る方法はありますか?

信頼できるものは何もありません。

おそらく、これは iFrame の http リクエストで送信されませんか? それとも、私はそれを見ることができませんでしたか?

リファラーで送信される場合があります

または、javascript からドメインを送信する必要がありますか?

フレーム化されたページから取得したい場合は、同じオリジン ポリシーによってブロックされます。

フレーミングページから送信したい場合は、クエリ文字列に入れることになり、フレーミングページを書いている人が好きなものに設定できるため、信頼できません。

X-Frame-Options ヘッダーもあります(ただし、ブラウザーのサポートは限られています)。

私が考えることができる最も信頼できる解決策は次のとおりです。

  1. フレームの読み込みに使用するクエリ文字列でオリジンを指定する必要があります
  2. リファラーを確認します。ホワイトリストと一致せず、空白でないtarget="_top"場合は、サイトへのリンクといくつかの JavaScript を除いて空白のページにリダイレクトします。top.location = "your site"
  3. 拒否されたステップ 2 と同じように動作しない場合は、クエリ文字列で指定されたオリジンがホワイトリストにあることを確認します。
  4. X-Frame-Optionsフレーミングを指定されたオリジンに制限するヘッダーを出力します

これは、フレーミング サイトがサイトをフレーミングするのを思いとどまらせるのに十分な数のブラウザーをキャッチする可能性があります。

于 2013-01-30T17:44:10.783 に答える
1

ページ上の IFrame リクエストに対して通常のブラウザーが送信するリファラーを確認することができます。

( Iframe 呼び出しMDNをブロックする方法 ) で説明されている "x-frame-options" ヘッダーを使用することもできますが、すべてのブラウザーがそれを尊重するわけではありません (一方で、ブラウザーがサポートしている場合はより信頼性が高くなります)。

于 2013-01-30T17:38:23.073 に答える
0

iframeのsanbox属性は、オリジンhttp://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/を含むiframeのさまざまなセキュリティの側面を制御するのに役立つ場合があります。

于 2013-01-30T17:47:39.160 に答える
0

2007 年のアーキテクチャ ジャーナルには、これに関する優れた記事があります:ブラウザーでのセキュアなクロスドメイン通信

基本的に記事が示唆していることは次のとおりです。ドメイン 1 にページ A があり、ドメイン 2 にページ B をソースとして持つ iframe がある場合、ページ B に iframe をドメイン 1 のページ C に配置すると、ドメイン間で情報を渡すことができます。 ここに画像の説明を入力

私はそれをテストしていませんが、これはうまくいくようです。

もう 1 つの可能性は、特別なファイル名 (たとえば、ドメイン 2 のページ B の URL のハッシュ) と基本的な拡張子 (.htm など) を持つファイルを作成し、それをドメイン 1 のルートに配置することです。ファイルがドメインに存在するかどうかの確認1 ただし、javascript では実行できないため、サーバー側のコードで実行する必要があります。

于 2014-01-16T13:19:00.257 に答える