20

window.top.Locationオブジェクトに関するクロスドメインポリシーには、非常に特殊なエッジケースがあります。

ドメインwww.bbb.comにIFrameAがあり、ドメインwww.aaa.comのページ内に住んでいるとします。

IFrame内のページは次のことができます。

  • window.top.locationをwindow.locationと比較します(フレーム化されているかどうかを検出するため)
  • window.top.location.replace(window.location)を呼び出して、自分自身にリダイレクトします
  • window.top.location.replace( "任意の文字列")を呼び出して、別の場所にリダイレクトします

しかし、それはできません:

  • Alert、Document.Write、またはwindow.top.location.hrefの任意の種類の出力を実行します
  • 他の変数に連結するか、便利な方法で使用してください
  • window.top.location.reload()を呼び出します

これらは私がすぐに見つけることができたものです。他にもエッジケースがあると思います。トップが別のドメインにある場合、いくつかのホワイトリストに登録されているものを除い
て 、ブラウザはtop.locationオブジェクトの使用を許可していないようです...

これはどこかに文書化されていますか?
これらのホワイトリストに登録されているものを見つけることができますか?
これはHTML標準であり、すべてのブラウザーで等しく実装されていますか?それとも、このセミランダムの実装ですか?

4

2 に答える 2

8

これは、セクション5.5.3.1のHTML5標準で正確に指定されています。

于 2013-10-03T17:18:24.340 に答える
6

セキュリティルールは、ブラウザのバージョンによって異なります。一般的に、新しいバージョンにはより厳しいルールがありますが、より微調整されています。

古いブラウザではトップフレームのロケーションオブジェクトに自由にアクセスでき、少し新しいブラウザでは完全に拒否され、現在のバージョンではロケーションオブジェクトを比較できますが、そこから読み取ることはできないと思います。

これに関するドキュメントを見つけることができるかもしれませんが、それは各ブラウザに固有であり、ブラウザの各バージョンに固有です。私の知る限り、これに対する本当の基準はありません。各ブラウザベンダーは、Webサイトビルダーの使いやすさを維持しながら、ユーザーを可能な限り保護しようとします。一般に、境界線に近いものがすべてのブラウザで機能すること、または将来のバージョンで機能し続けることを実際に想定することはできません。

于 2009-07-11T15:30:11.793 に答える