web-dev-qa-db-ja.com

機能を制限せずにiframeを安全に埋め込むにはどうすればよいですか?

信頼できないサイトからのiframeをウェブアプリケーションに埋め込みたいのですが。 iframe:

  • javaScriptとブラウザのプラグイン(Flashなど)を実行できる必要があります
  • javaScriptを介してWebアプリケーションにアクセスできないようにする必要があります
  • _self、_parent、_topリンクは、ブラウザーウィンドウ全体ではなく、同じiframeでページを開く必要があります(自分のサイトを他のサイトで置き換えたくありません)
  • _blankリンクは新しいブラウザウィンドウ/タブで開く必要があります

(つまり、埋め込みサイトの機能をできるだけ制限したい)

できますか?

Iframeのサンドボックス属性は知っていますが、それを使用して実行できるかどうか判断できません。

14
Andrei Botalov

サンドボックス属性は、デフォルトでは上部ナビゲーションを防止し、allow-scriptsを使用したスクリプトを許可するように構成できます。現在のすべてのブラウザーで同じOriginポリシーを使用すると、異なるOrigin(ホスト)からのコンテンツを含むiframeがJavaScriptを使用してアプリケーションにアクセスできなくなります。sandbox属性は、同じ元のiframeでもアクセスできます。

つまり、_blankが期待どおりに機能するかどうかをテストする必要がありますが、要するに、サンドボックスは要件を満たしているはずです。

ただし、すべてのブラウザがサンドボックス属性をサポートしているわけではなく、サポートしていないブラウザはiframeをサンドボックス化されていないものとして扱います。

1
Jan Schejbal