5

昨日、Asp.Net MVC で Json Hijackingを防ぐ方法についての素晴らしい記事を読みました。ルールは次のとおりです。get リクエストで、適切なデータを json 形式で送信しないでください。Google で簡単に検索すると、認証 Cookie を使用して別の用途からデータを抽出するために使用されるスクリプトを定義する方法を簡単に学ぶことができます。

しかし、これらの記事をすべて読んだ後で、Ajax Jquery ポスト リクエストで Json ハイジャックを実行できない理由がわかりません。Ajax リクエストは同じオリジン ポリシーの対象ですが、JQuery にはクロスドメイン リクエストを実行できるプロパティがあることを読みました。

この場合、ドキュメントの準備完了イベントで $.postJSON を使用するスクリプトで Json Hijacking を行うことは可能ですか? はいまたはいいえの場合、その理由を正確に説明していただけますか?

これは、私が考えていることを実行するための単純なコードの束です。

$.postJSON = function (url, data, callback) {
   $.post(url, data, callback, "json");
};

<script>
    $(function(){
       $.postJSON("/VulnerableSite/ControllerName/ActionName", 
         { some data parameters }, function() {
         // Code here to send to the bad guy the data of the hacked user. 
         }
    });
</script>

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

4

1 に答える 1

8

しかし、JQueryにはクロスドメインリクエストを実行できるプロパティがあります。

ええ、でも GET リクエストでしか機能しません。POST リクエストでクロスドメイン AJAX 呼び出しを行うことはできません。また、最新のブラウザーのほとんどは、__defineSetter__メソッドをオーバーライドする可能性を既に修正しています。この攻撃のアイデアは<script>、悪意のあるサイトからあなたの Web サイトを指すタグを含めることに依存しています。しかし、ブラウザーは、POST ではなく、このスクリプトを取得するために GET 要求を送信します。そのため、POST を使用して JSON で機密情報を送信する方が安全です。

于 2013-03-02T13:25:07.580 に答える