6

私は次の状況の解決策を見つけようとしています:

  • HTML、JavaScript、AJAX、広告などで作られたWebアプリケーションがあります。
  • 埋め込まれるプラグインを作成するアプリケーション/ウェブサイトにユーザーが貢献してほしい。
  • このプラグインは同様のテクノロジー(ajax、HTMLなど)を使用して作成されるため、プラグインが独自のjavascriptコードを実行できるようにする必要があります。
  • 各プラグインは、いくつかのユーザー情報とプラグイン(古いfbml facebookアプリケーションなど)を含むページで機能します

問題は、この方法でプラグインがユーザー情報を取得するための呼び出しを行うこともできることです。(プラグインのコードが埋め込まれているため、そのドメインはメインのWebサイトと同じになり、コードは完全に私のWebサイトにあります)。

だから問題は、どうすればそれを回避し、プラグインがユーザーについて取得できる情報を正確に制御できるかということです。

プラグインはチェックされず、いつでも変更できるため、すべてのプラグインコードを読み取ることは解決策ではありません。

私は、おそらく簡単で効果的な提案を受け入れており、プラグイン全体をiframeに入れていない可能性があります。

-編集:アプリケーションを作成する古い方法があったとき、Facebookはどのように機能しましたか?(現在はiframeのみですが、FBMLアプリケーションの方法がありましたが、どのようにしてこれを安全にしたのですか?)

4

4 に答える 4

1

任意のコードの実行を可能にするエクスプロイトについて聞いたことがありますか。最も危険な攻撃の1つはどれですか?

さて、この場合、あなたは明示的かつ積極的に任意のコードの実行を許可しており、それをサンドボックス化する方法はほとんどありません。

1)前述のように、iframe内で別のサブドメインから「プラグイン」を実行して、そこでサンドボックス化することができます。このように、プラグインはCookieとスクリプトに到達できません。

プラグインがこのドメインのサービスと通信するようにしたい場合は、クロスドメイン通信になることに注意してください。したがって、JSONPに頼るか、新しいクロスドメインアクセス制御仕様を使用する必要があります。(つまり、Webサービスの応答で適切なヘッダーを返します-Access-Control-Allow-Origin "plugins.domain.com")

2)独自の簡単なスクリプト言語を作成し、必要なだけ公開します。これは明らかに面倒です。たとえそれができたとしても、プラグイン開発者は学習曲線に耐えることができます。

于 2012-12-07T18:08:14.260 に答える
1

Facebookには、実行可能なものを制御することでサンドボックス化を行う独自の「JavaScript」造語FBJSがありました。

于 2012-12-07T19:06:52.427 に答える
0

ジューシーなバックエンドがなければ、これはスクリプトの影響を本当に制限します。

ただし、 DOMベースのxssクリックジャッキングについてはまだ心配する必要があります

于 2012-12-07T21:53:20.080 に答える
0

6年後ですが、これに現代的な解決策を提供することが重要だと感じています。new(er)sandbox属性を使用して、IFrameの機能を制限できます。

このシステムの単純な実装ではallow-scripts、おそらくいくつかのカスタムライブラリ関数を含む各プラグインと一緒に含まれる単純なJSファイルを使用して、IFrameへのアクセス許可のみが許可されます。

HTMLページと通信するには、を使用しますpostMessage。プラグイン側では、前述のようなライブラリを使用してコマンドを転送できます。ユーザー側では、別のシステムがこれらの要求を検証およびデコードしてから実行する必要があります。

サンドボックス化されたIFrameにはクロスオリジン機能がないため、ページを直接変更することはできません。ただし、これは、の出所をpostMessage確認できないことも意味するため、セキュリティ上の理由から、ある種のコードを作成する必要があります。

于 2019-05-22T02:56:54.583 に答える