2013-03-02 13 views
6

Gestern habe ich einige schöne Artikel darüber gelesen, wie man Json Hijacking with Asp.Net MVC verhindern kann. Die Regel lautet: Senden Sie niemals sensible Daten im JSON-Format über eine Abrufanforderung. Mit einer einfachen Suche auf Google können Sie leicht lernen, wie man ein Skript definiert, das verwendet wird, um Daten aus einer anderen Verwendung mit Hilfe seines Authentifizierungs-Cookies zu extrahieren.Json Hijacking mit Ajax Jquery Post Anfrage

Aber nach dem Lesen all dieser Artikel, ich weiß nicht, warum es nicht möglich ist, Json Hijacking mit Ajax Jquery Post Anfrage zu tun. Ich habe gelesen, dass Ajax-Anfragen der gleichen Ursprungs-Policy unterliegen, aber JQuery hat eine Eigenschaft, um domainübergreifend Anfragen stellen zu können.

In diesem Fall ist es möglich, Json Hijacking mit einem Skript mit $ .postJSON auf dem Dokument bereit Ereignis zu tun? Wenn ja oder nein, kannst du mir genau erklären warum?

Hier ist ein einfaches Bündel von Code zu tun, was ich denke:

$.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> 

Ihnen sehr danken.

Antwort

8

aber JQuery haben eine Eigenschaft, um domänenübergreifende Anfrage zu tun.

Ja, aber es funktioniert nur mit GET-Anfragen. Sie können domainübergreifende AJAX-Aufrufe nicht mit POST-Anfragen durchführen. Auch die meisten modernen Browser haben die Möglichkeit, die __defineSetter__ Methode zu überschreiben, bereits behoben. Die Idee dieses Angriffs besteht darin, ein <script>-Tag einzufügen, das von einer bösartigen Website auf Ihre Website verweist. Der Browser sendet jedoch eine GET-Anforderung, um dieses Skript und nicht POST abzurufen. Aus diesem Grund ist es sicherer, POST zu verwenden, um vertrauliche Informationen mit JSON zu übertragen.

+0

Ich las auf diesem Beitrag (http://StackOverflow.com/questions/3877309/submit-Cross-Domain-Ajax-Post-Request) und er sagen, dass ich Cross-Domain-AJAX-Anruf mit POST-Anfragen tun kann, aber ich gewann bekomme keine Antwort zurück. Irgendwie hat mir das geantwortet, dass es keine Sicherheitslücken in Bezug auf JSON gibt, wenn ich immer eine POST-Anfrage verwende. – Samuel

+0

Ist es möglich, Jsons Hijacking mit einem Aufruf von $ .get auszuführen, anstatt zu versuchen, das Array neu zu definieren? Alle Artikel, die ich im Internet gelesen habe, erwähnen nie die Verwendung von jQuery, um die get-Abfrage mit Ajax zu machen. – Samuel

+0

@Samuel: Nein, die jQuery AJAX-Anfragen sind durch die [Gleiche Ursprungsrichtlinie] (http://en.wikipedia.org/wiki/Same-origin_policy) geschützt. Das Einfügen eines '