1

顧客が自分の Web アプリケーションで独自の HTML を作成し、コードをコピーして Web サイトに貼り付けて、カスタマイズされたサイズとページ内の別のオプションを使用して結果を表示したいと考えています。私の Web アプリケーションの出力 HTML には、HTML タグと JavaScript コードが含まれています (たとえば、JavaScript で作成された Web チャートです)。

これには2つの方法がありました。1 つを使用iframeして 2 つを使用してjquery .load()います。

より安全で良いものは何ですか?他に方法はありますか?

4

1 に答える 1

2

iframeより良いです-Javascriptを実行している場合、そのスクリプトはユーザーのサイトと同じコンテキストで実行されるべきではありません:ユーザーが同意する必要のないレベルの信頼をここで求めており、コードはすべてうまくいっていますサンドボックス化されているため、親ドキュメントのスタイルやスクリプトについて心配する必要はありません。

フロントエンド Web 開発者および Web マスターとして、iframe でサードパーティ コードをサンドボックス化することを自分で決定することがよくあります。以下は、私がそうした理由の一部です。

  • スクリプトはドキュメントの DOM を操作します。imgかつて、サードパーティのウィジェットが、サイト全体のタグと CSS で使用されているすべての PNG で、IE にバグが多く、パフォーマンスに負荷がかかる PNG 修正ハックを導入したことがありました。
  • 多くのスクリプトはグローバル イベントを上書きし、onload他のスクリプトの初期化トリガーを奪います。
  • ローカル セッション情報を読み取り、自分のリポジトリに送り返します。
  • 任意の数のリソースをロードし、CPU を集中的に使用するプロセスを実行し、サイトのコア エクスペリエンスを中断して低下させます。

上記はすべて、上記のように考えられる第三者の近視眼的または悪意の例ですが、要点は、サービスのユーザーの 1 人として、ギャンブルをする必要はないということです。あなたのコードを iframe に入れると、サイトやそのユーザーを台無しにすることなく、喜んで独自のことを実行できることがわかります。また、選択した瞬間にロードと実行を遅らせることもできます (選択した時点で iframe を動的にロードすることにより)。

ユーザーの都合ではなく、あなたの利便性の観点から主張するには:

  • XSS に関連する信頼の問題について心配する必要はありません。ツールを実行することで、不必要な心配にさらされていないことをユーザーに正直に伝えることができます。
  • ユーザーのサイトに対する CSS や JS の影響を回避するために、余計な努力をする必要はありません。
于 2012-09-10T11:18:08.050 に答える