人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptについて

あるページを iframe内に表示したいのですが、

frameを解除するようにされているページを
表示しようとしたの場合は
表示を中断する方法はありませんでしょうか。

フレームを解除される前にです。

onUnload で何とかできないかな?
と試しましたが、その前に解除されてしまいます。

もちろん表示できなくて良いので、
そういう仕組みが仕込まれている、
という事を判断して、読み込むのは諦め、
他の処理を行いたいのです。

よろしくお願い致します。


追記です。

こういった内容が書かれているページを読み込んだ際に、
フレームを解除する前に止めたいのです。

if( self != top ) { top.location = self.location; }

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Lhankor_Mhy
●300ポイント ベストアンサー

完全にご要望を満たすものではないのですが。

Framekiller - Wikipedia, the free encyclopedia
↑ウィキペディアにありました。
「Modern framekiller」の「Alternative solutions」を主要ブラウザで試しましたが、フレームを解除される前にbeforeunloadイベントの戻り値がダイアログで表示され、ページを移動するか確認されます。
ページを移動することを選択するとフレームが解除されますが、ページにとどまることを選択するとフレーム解除がキャンセルされ、iframeにその内容が表示されます。
ただし、Firefoxのダイアログにはメッセージを挿入できませんでした。これはバグであるらしいです。

もし、iframeの内容が表示されてしまうことがイヤであれば、beforeunloadイベントの中でsetTimeoutなどでiframeを削除してしまえばいいかと思います。



また、こちらは試していないのですが、このような方法もあるらしいです。
Preventing Frame Busting and Click Jacking (UI Redressing) | coderrr
topを204ページにリダイレクトしてしまう、という方法みたいです。なかなかトリッキーですね。


worldtravelさんのコメント
ありがとうございます。 凄く希望に近いです。 ダイアログは表示せずに、 「移動しない」を選択した事にするようにはできないでしょうか。 iframeの中は表示されれば嬉しいですが、 無理であれば表示しなくても構いません。 もしご存知でしたらお願い致します。

Lhankor_Mhyさんのコメント
2つ目の方法は、ダイアログが出ないと思いますよ。 クリックジャッキングの攻撃手法をまとめたPDFがありましたので、参考にURLを張ります。 http://crypto.stanford.edu/~dabo/pubs/papers/framebust.pdf ここの 204 Flushing という手法が回答での2つ目の方法ですね。

Lhankor_Mhyさんのコメント
PDFを読んでたんですが、ご希望の動作をさせるには H. Sandbox attribute が最適かと思いました。 HTML5対応ブラウザ限定ですが、iframe に sandbox="" を書くだけですからお手軽です。

Lhankor_Mhyさんのコメント
もうひとつ追記。 中のページのことを考えると、 sandbox="allow-forms allow-scripts" と書くのがいいのかもしれませんね。

worldtravelさんのコメント
うわっ これだけで済むのですね。 ありがとうございました! 助かりました。

worldtravelさんのコメント
困っていたので、本当に助かりました。 ありがとうございました。 また困った事がありましたらお願い致します。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ