1

私はasp.net MVCを使用して、ajax相互作用を持つアプリケーションを開発しています。コントローラーにJsonResultメソッドがあり、jsonのシリアル化されたデータを返します。たとえば、リクエストがhttp://somesite.com/findwidgets/に対して行われると、mvc はデータを json としてシリアル化し、送り返します。

クライアント側でjQueryを使用して、ajaxリクエストを処理し、結果を操作しています。データの取得に問題はありませんが、ブラウザのアドレス バーからhttp://somesite.com/findwidgets/にリクエストを送信すると、json データがダウンロードとして返されることがわかりました。

また、他の人がhttp://somesite.com/findwidgets/を使用して単純にリクエストを作成してデータを取得できないようにするにはどうすればよいですか?

クロスドメインはここでの適切なトピックですか、それとも他のセキュリティ問題について話しているのでしょうか?

ありがとう

4

3 に答える 3

2

また、他の人がhttp://somesite.com/findwidgets/を使用して単純にリクエストを作成してデータを取得できないようにするにはどうすればよい ですか?

あなたが説明する問題は、人々が別のサイトから自分のフォームに投稿するのを防ぐ方法を尋ねるときに人々が言及するものと同じです. 私が見た唯一の合理的な答えは、リクエストごとにキーが生成され、後続の各リクエストが検証のために以前に生成されたキーを渡す必要がある、ある種のセッションキーシステムを使用することです。キーなしまたは無効なキーで到着したリクエストは、アクセスを拒否されます。

ブラウザのアドレス バーからhttp://somesite.com/findwidgets/にリクエストを送信すると、json データがダウンロードとして返されることがわかりました。

これは、JSON がテキスト MIME タイプとして認識されず、ブラウザーがテキスト MIME タイプのみをブラウザーに直接表示するためです。それ以外は、インラインで表示されるのではなく、ダウンロードとして提供されます。

于 2009-01-22T17:19:30.847 に答える
0

リクエストホストも確認し、現在のドメインに制限することを検討してください。

于 2009-02-03T02:21:18.017 に答える
0

また、コントローラーの IsAjaxRequest() プロパティを使用することもできます (false の場合、たとえば null の結果を返します)。他のサイトからのデータの投稿/取得を防ぐために、 Request.UrlReferrer プロパティを確認できます (ただし、ブラウザーはそれについて嘘をつくことができます)。

于 2009-02-16T23:58:48.057 に答える