ASP.NET MVC JsonResultとjQueryを使用したセキュリティとクロスドメイン
-
19-08-2019 - |
質問
asp.net MVCを使用して、ajaxとやり取りするアプリケーションを開発しています。 jsonシリアル化されたデータを返すコントローラーにJsonResultメソッドがあります。たとえば、 http://somesite.com/findwidgets/ へのリクエストが行われた場合、mvcはデータをシリアル化しますjsonとして送信します。
クライアント側でjQueryを使用して、ajaxリクエストを処理し、結果を操作しています。データの取得に問題はありませんが、 http://somesite.com/にリクエストを送信できることがわかりました。ブラウザのアドレスバーからfindwidgets / を実行すると、ダウンロードとしてjsonデータが返されます。
また、 http://somesite.com/を使用して、他のユーザーが単純にリクエストを行ってデータを取得できないようにする方法findwidgets / ?
クロスドメインはここで適切なトピックですか、それとも他のセキュリティ問題と言えますか?
ありがとう
解決
また、どうすれば他の人が 単純にリクエストを行ってつかむことはできません データを使用して http://somesite.com/findwidgets/ ?
あなたが説明する問題は、人々が別のサイトからフォームに投稿するのを防ぐ方法を尋ねるときに言及する問題と同じです。私が見た唯一の合理的な答えは、あるタイプのセッションキーシステムを使用することです。キーなしまたは無効なキーで到着したリクエストは、アクセスを拒否されます。
私はリクエストをすることができることを発見しました http://somesite.com/findwidgets/ へ ブラウザのアドレスバーから そして、jsonデータを ダウンロード。
これは、JSONがテキストMIMEタイプとして認識されず、ブラウザーがブラウザーに直接テキストMIMEタイプのみを表示するためです。それ以外は、インラインで表示されるのではなく、ダウンロードとして提供されます。
他のヒント
リクエストホストのチェックも考慮し、現在のドメインに制限します。
コントローラのIsAjaxRequest()プロパティを使用することもできます(falseの場合-たとえばnull結果を返します)。他のサイトからのデータの投稿/取得を防ぐために、Request.UrlReferrerプロパティを確認できます(ただし、ブラウザはそれについて嘘をつくことができます)。