2013-03-02 8 views
6

कल, मैंने Json Hijacking with Asp.Net MVC को रोकने के तरीके के बारे में कुछ अच्छे लेख पढ़े। नियम यह है: अनुरोध प्राप्त करने पर जेसन प्रारूप में समझदार डेटा कभी नहीं भेजें। Google पर एक साधारण खोज के साथ, आप आसानी से सीख सकते हैं कि एक स्क्रिप्ट को कैसे परिभाषित किया जाए जिसका उपयोग किसी अन्य उपयोग से डेटा को अपने ऑथ कुकी की सहायता से निकालने के लिए किया जाएगा।अजाक्स Jquery पोस्ट अनुरोध के साथ जेसन अपहरण

लेकिन इन सभी लेखों को पढ़ने के बाद, मुझे नहीं पता कि जेसन हाइजैकिंग अजाक्स Jquery पोस्ट अनुरोध के साथ क्यों करना संभव नहीं है। मैंने पढ़ा है कि अजाक्स अनुरोध एक ही मूल नीति के अधीन हैं लेकिन JQuery के पास क्रॉस-डोमेन अनुरोध करने में सक्षम होने के लिए एक संपत्ति है।

इस मामले में, दस्तावेज़ तैयार ईवेंट पर $ .postJSON का उपयोग करके एक स्क्रिप्ट के साथ जेसन हाइजैकिंग करना संभव है? यदि हां या नहीं, तो क्या आप मेरी व्याख्या कर सकते हैं क्यों?

यहाँ कोड का एक सरल गुच्छा मैं क्या सोच रहा हूँ क्या करना है:

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

आपको बहुत बहुत धन्यवाद।

उत्तर

8

लेकिन JQuery के पास क्रॉस-डोमेन अनुरोध करने में सक्षम होने के लिए एक संपत्ति है।

हाँ, लेकिन यह केवल जीईटी अनुरोधों के साथ काम करता है। आप POST अनुरोधों के साथ क्रॉस डोमेन AJAX कॉल नहीं कर सकते हैं। इसके अलावा अधिकांश आधुनिक ब्राउज़रों ने __defineSetter__ विधि को ओवरराइड करने की संभावना तय कर दी है। इस हमले का विचार किसी दुर्भावनापूर्ण साइट से आपकी वेबसाइट पर इंगित <script> टैग शामिल है। लेकिन ब्राउज़र इस स्क्रिप्ट को पुनर्प्राप्त करने के लिए एक जीईटी अनुरोध भेजता है और पोस्ट नहीं करता है। यही कारण है कि जेएसओएन के साथ संवेदनशील जानकारी संचारित करने के लिए POST का उपयोग करना सुरक्षित है।

+0

मैंने इस पोस्ट पर पढ़ा है (http://stackoverflow.com/questions/3877309/submit-cross-domain-ajax-post-request) और वह कहता है कि मैं पोस्ट अनुरोध के साथ क्रॉस डोमेन AJAX कॉल कर सकता हूं लेकिन मैंने जीता एक प्रतिक्रिया वापस प्राप्त नहीं है। किसी भी तरह से, उसने मुझे जवाब दिया कि JSON के संबंध में कोई भेद्यता संभव नहीं है यदि मैं हमेशा POST अनुरोध का उपयोग करता हूं। – Samuel

+0

क्या सरणी को फिर से परिभाषित करने की कोशिश करने के बजाय $ .get पर कॉल के साथ जेसन अपहरण करना संभव है? नेट पर पढ़ने वाले सभी लेखों में कभी भी AJAX के साथ क्वेरी प्राप्त करने के लिए jquery के उपयोग का उल्लेख नहीं किया जाता है। – Samuel

+0

@ सैमुएल: नहीं, jQuery AJAX अनुरोध [समान मूल नीति] (http://en.wikipedia.org/wiki/Same-origin_policy) द्वारा संरक्षित हैं। 'Src12 के साथ'

संबंधित मुद्दे