2012-02-12 4 views
5

これは一般的な質問とは逆に思えます。誰かがiframe内のリンクをクリックすると、ウィンドウ全体をナビゲートします

iframe内に他のページ(別のドメインから)が表示され、上にヘッダーが表示されるアプリがあります。ここまでは順調ですね。しかし、誰かがその内側のページ上のリンクをクリックすると、iframeをナビゲートするだけで、ページ全体(代わりに、特にURLバーのURLを更新すること)をページに移動します。

これは、クリックジャックとは基本的に反対です。ナビゲーションがiframeでないかのように動作するようにしたいだけです。簡単な方法はありますか?

答えて

4

の内容が異なるドメインにある場合は、セキュリティ上の理由からそれを行うことはできません。
あなたが他のドメインとhtmlコードへのアクセスを持っている場合は、リンク上でこのような何かを行うことができます:あなたは内側と外側のサイトの両方をコントロールしていない場合

href="javascript:parent.window.location.href='http:/google.com' 
+0

このメソッドを使用すると、iframeにリンクhrefのテキストメッセージが表示されることがあります。より良い答えはtarget = '_ parent'でした。 – orberkov

1

これは、同じドメインの元ポリシーに違反しますiframe

iframeの中にユーザーの銀行を置くとします。フレーム内のもの(外部からのもの)にイベントハンドラを登録することができれば、ユーザーの銀行口座番号を記録し、広告目的でクリックしたものを見て、好きではない行動を取るときにそれらを誤って誘導します。そしてフレームは彼らの銀行への安全な接続であると表示されます!

フレーム内にサイトがある場合は、サーバーに状態を渡すか、新しい(ish)HTML5 Web Messaging標準を使用するか、フレーム内からparent.windowを操作して可能です。

+0

セキュリティ上の理由から私はかなり多くのことを行うことができませんが、内部サイトが明示的に要求する場合にのみ、フレームバストを許可するのは本当に神秘的なようです。 – apenwarr

+0

@apenwarrユーザーに悪意のあるサイトを訪問させるのは簡単です。悪質なサイトが無害なサードパーティのWebページを「動かす」ことを望まないのは、それがXSSの一種です。 – Borealid

+0

私は何も運転しようとしていません - 文字通り、私の*ページが消えたいだけです。潜在的に悪意のあるページをiframeに読み込むことができれば、そのページがネストされたページではなくルートページになることは、もはや危険なことではありません。 – apenwarr

3

iframeのコンテンツはリンクのターゲットを変更できます:use _parentまたは_top。

<a href='#aboutus' target='_parent'>About Us</a> 
関連する問題