1

jQuery から同じ Web ドメインでホストされている Web サービスへの JSON 呼び出しを頻繁に使用する Web サイトがあります。多くの呼び出しは、訪問者がログインする必要のない公開ページから行われます。

Fiddler を使用してこれらの JSON 呼び出しを再生できるように見えますが、これは大きな問題です。悪意のあるユーザーが私のサイトを開くだけで Fiddler のトレースをキャプチャできるようになったためです。

サイトのページから行われた JSON 呼び出しのみがサーバーで許可されるように、Web サービスを保護する方法はありますか? バックエンドで ASP.NET MVC を使用しています。

ありがとうございました。


このトピックに貢献していただきありがとうございます。フォローアップの質問があります:

SSLについてはどうですか?すべてのサービスを SSL で保護されたフォルダーに配置した場合、それは (パフォーマンスを犠牲にして) 包括的なソリューションになりますか? ありがとう。

4

4 に答える 4

1

答えはノーです。ユーザーはいつでもブラウザによって作成された HTTP リクエストをシミュレートできます。そのため、すべての例外と悪意のある試行を処理できるようにバックエンドをコーディングする必要があります。

  1. すべてのリクエストに nonce を使用します。これを実装するのは難しいかもしれませんが、私の頭に浮かんだ最も重要なことの 1 つです。

  2. ユーザー エージェントを追跡し、非標準ブラウザからのすべてのリクエストを無効にします。

  3. リファラーをチェックして、それが予想されるページまたは少なくとも同じドメインから来ていることを確認してください

  4. 追跡するために追跡セッション/Cookie 変数を含める

ただし、これらはすべて回避される可能性があるため、最善の策は、バックエンド システムをより安全にしてユーザー入力を処理できるようにすることです。

于 2013-03-13T12:37:12.830 に答える
0

JSON 呼び出しの有効性を確認するには複数の方法があり、それぞれが複数のレベルのセキュリティを提供します。

  • RefererHTTP ヘッダーにサイトの URL が含まれていることを確認します。これにより基本的なセキュリティが確保されるため、通常のユーザーは Fiddle を介して呼び出しにアクセスできなくなります。たとえば、
  • JSON のコンテンツがサーバー側で生成された場合は、json コンテンツに署名して、以前にサーバー側で生成した呼び出しのみが受け入れられるようにすることができます。たとえば、JSON Web Token (JWT) を確認してください。
  • JSON コンテンツがサーバー側で生成されなかった場合でも、各 JSON 呼び出しに沿って存在する必要がある 1 回限りの「チケット」を発行できます。サーバー側でチケットの有効性と、チケットが一度だけ使用されたことを確認する必要があります。
于 2013-03-13T12:43:22.407 に答える
0

フォローアップの質問について:

SSL はブラウザとサーバー間の接続のみを保護します。つまり、両者間の通信を検査することはできません。(たとえば、途中で呼び出しの内容を変更する可能性のある中間者。) 攻撃者が独自の JSON 呼び出しを行うことを防ぐことはできません。違いは、彼の呼び出しは暗号化されており、あなたのサーバー以外は検査できないことです。

于 2013-03-13T13:50:49.993 に答える