2013-03-02 45 views
6

Ieri ho letto alcuni bei articoli su come prevenire Json Hijacking with Asp.Net MVC. La regola è: non inviare mai dati sensibili in formato json su una richiesta get. Con una semplice ricerca su google, puoi facilmente imparare come definire uno script che verrà utilizzato per estrarre i dati da un altro utilizzo con l'aiuto del suo auth cookie.Json Hijacking con Ajax Jquery richiesta post

Ma dopo aver letto tutti questi articoli, non so perché non è possibile fare Json Hijacking con Ajax Jquery su richiesta. Ho letto che le richieste Ajax sono soggette alla stessa politica di origine, ma JQuery ha una proprietà per poter fare una richiesta interdominio.

In questo caso, è possibile eseguire Json Hijacking con uno script utilizzando $ .postJSON sull'evento pronto per il documento? Se si o no, potresti spiegare il mio esattamente perché?

Ecco un semplice mucchio di codice per fare quello che sto pensando:

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

Grazie mille.

risposta

8

ma JQuery dispone di una proprietà per poter eseguire la richiesta tra domini.

Sì, ma funziona solo con richieste GET. Non è possibile effettuare chiamate AJAX su più domini con richieste POST. Anche i browser più moderni hanno già risolto la possibilità di ignorare il metodo __defineSetter__. L'idea di questo attacco si basa sull'inserimento di un tag <script> che punta al tuo sito web da un sito dannoso. Ma il browser invia una richiesta GET per recuperare questo script e non POST. Ecco perché è più sicuro usare POST per trasmettere informazioni sensibili con JSON.

+0

Ho letto su questo post (http://stackoverflow.com/questions/3877309/submit-cross-domain-ajax-post-request) e mi ha risposto che posso effettuare chiamate AJAX su più domini con richieste POST ma ho vinto ottenere una risposta. In ogni caso, questo mi ha risposto che non ci sono vulnerabilità possibili in relazione a JSON se uso sempre la richiesta POST. – Samuel

+0

È possibile eseguire dirottamenti json con una chiamata a $ .get invece di provare a ridefinire l'array? Tutti gli articoli che ho letto in rete non menzionano mai l'uso di jquery per eseguire la query get con ajax. – Samuel

+0

@ Samuel: No, le richieste jQuery AJAX sono protette dalla [stessa politica di origine] (http://en.wikipedia.org/wiki/Same-origin_policy). Includere un tag '