2

できれば具体的な回答例をお願いします。

説明のために、ここには3人のプレーヤーがいます。

  • マイサーバー(myserver.com)
  • クライアントサーバー(myclient.com)
  • クライアントユーザー(myclient.comを介してデータにアクセスする)

クライアントがJSON形式でデータを取得できるようにするWebサービスをクライアントが利用できるようにしています。彼らのウェブサイトが機能するためには、標準のXOR回避策を使用する必要があります-リクエストをサーバー側で行うか、私に設定を任せます

Access-Control-Allow-Origin: http://myclient.com

したがって、ここで2つの部分からなる質問があります。まず、 myserver.comでオリジンポリシー設定するのはなぜですか?サーバーがコンテンツを提供する相手を気にするのはなぜですか?これを設定するのはmyclient.comではないでしょうか。ここでの具体的な例は素晴らしいでしょう。

パート2、JSONPがこれを回避することは理解していますが、パート1のセキュリティへの影響を理解していないため、JSONPを使用することを心配しています。設定できればJSONPのポイントは何Access-Control-Allow-Origin: *ですか?

4

1 に答える 1

3

たくさんの質問!

  1. ユーザー固有のコンテンツを提供する場合、JSONPは間違いなく危険です。サーバーが提供しているコンテンツが完全に公開されており、(おそらく)読み取り専用である場合は、JSONPが賢明な選択です。「ログイン状態」または認証/承認を前提とするものには使用しないでください。

  2. CORSは間違いなくJSONPよりもはるかに優れていますが、すべての(古い)ブラウザーでサポートされているわけではありません。可能な限りサポートしたい場合は、何らかのフォールバックが必要になります。CORSを使用すると、GET以外のリクエストを実行できるため、柔軟性が大幅に向上します。

  3. ターゲットサーバーがこれを許可する必要がある理由は、主にドメインAで実行されているJavaScriptがドメインBにアクセスできないためです。ドメインAがこれを「許可」できる場合は、サンドボックスにアクセスできるJavaScriptアプリケーションを作成できることを意味します。任意のパブリックサーバーの。ドメインBの所有者のみが、ドメインAの所有者にコンテンツへのアクセスを明示的に許可できます。

  4. あなたの議論(なぜドメインBは彼らのリソースにアクセスする人を気にするのか)は通常有効です。ただし、これはドメインBを保護するためではなく、エンドユーザーを保護するためです。ドメインAは、明示的な許可なしに、エンドユーザーに代わってドメインBへの要求を実行することを許可されるべきではありません。

そして念のために言っておきますが、JSONPのセキュリティへの影響を十分に理解していない限り、CORSの方がはるかに安全な選択である可能性があります。

于 2012-09-28T14:30:28.787 に答える