2013-10-24 1 views
6

2 अलग-अलग अनुप्रयोगों से, मैं क्रॉस-ऑर्गिन अनुरोध भेजने में सक्षम था। हालांकि ब्राउज़र क्रॉस-ओरिजिन की एक त्रुटि लौटाता है, लेकिन मेरा सर्वर अभी भी अनुरोध प्राप्त कर रहा है और निष्पादित कर रहा है। उदाहरण के लिए, एक दूरस्थ साइट से, मैं क्रॉस-डोमेन अनुरोध का उपयोग करक्रॉस डोमेन AJAX अनुरोध भेजने के लिए अन्य वेबसाइट को कैसे रोकें?

$.ajax({ 
     xhrFields: { 
      withCredentials: true 
     }, 
     data:{ my: 'a' }, 
     url: 'http://MyApp/Page', 
     type: 'POST' 
}) 

मुझे पता है कि ब्राउज़र स्क्रिप्ट के जवाब वापस नहीं करता आह्वान कर सकते हैं, लेकिन अपने सर्वर पृष्ठ अभी भी निष्पादित।

मान लें कि एक निर्दोष उपयोगकर्ता किसी साइट पर लॉग इन है, http://abc.com। यह एप्लिकेशन रिकॉर्ड डालने के लिए पोस्ट अनुरोध स्वीकार करेगा। जब निर्दोष उपयोगकर्ता निर्दोष http://HackerSite.com पर जाता है, तो http://HackerSite.comhttp://abc.com पर अजाक्स के माध्यम से एक POST अनुरोध भेजने में सक्षम होगा। इससे कैसे बचें?

+2

अच्छा सवाल। यदि आपके पास इसका उत्तर है तो यदि आप पोस्ट करते हैं तो मैं बहुत सराहना करता हूं। –

+0

एक डब्ल्यूसीएफ सेवा के लिए, आप अपने एंड पॉइंट कॉन्फ़िगरेशन में ** crossdomainscriptaccessenabled ** को गलत पर सेट कर सकते हैं। – Saranya

+2

आपको एक फॉर्म सबमिट करने के साथ एक ही समस्या होगी, कोई जावास्क्रिप्ट शामिल नहीं है। सीओआरएस स्पेस को अतिरिक्त सुरक्षा के साथ दिमाग में नहीं बनाया गया था। इसके बजाए, यह आपके लिए अनिवार्य रूप से वही क्रियाएं करने की अनुमति देता है जो आप पहले से ही कर सकते हैं (क्रॉस-मूल) संस अजाक्स। सीओआरएस स्पेक थोड़ा आगे जाता है, जिसमें यह सुनिश्चित होता है कि आपका सर्वर अंतर्निहित अनुरोध भी प्राप्त नहीं करता है, यदि आपका सर्वर स्पेक में सही ढंग से ऑप्ट-इन नहीं करता है और उसी अनुरोध को क्रॉस-मूल संस अजाक्स नहीं भेजा जा सकता है (कहते हैं, एक फॉर्म जमा के माध्यम से)। इस आखिरी अवधारणा को प्रीफलाइटिंग कहा जाता है। –

उत्तर

2

आप जिस भेद्यता के बारे में बात कर रहे हैं वह CSRF है लेकिन इसकी सुरक्षा की जा सकती है।

आप X-Requested-With: XMLHttpRequest शीर्षलेख भेजकर और जांचकर AJAX अनुरोध (उदा। HTML फॉर्म द्वारा) के बाहर सबमिट किए गए POST के विरुद्ध सुरक्षा कर सकते हैं। इस हेडर के कारण सुरक्षित सूची में नहीं होने के कारण यह AJAX के माध्यम से क्रॉस-डोमेन भी नहीं भेजा जा सकता है (CORS के बिना)।

हालांकि अतीत में वहाँ एक ब्राउज़र के माध्यम से इस तरह के फ्लैश के रूप में प्लगइन्स जहां हेडर सेट किया जा सकता है कि संभव नहीं थे के माध्यम से कुछ कारनामे किया गया है (उदाहरण के लिए Referer) तो यह से बचने के लिए यह synchroniser token pattern जो एक सेट करना शामिल है का उपयोग करने के लिए सिफारिश की है एक छिपे हुए क्षेत्र में टोकन जिसे सभी विनाशकारी अनुरोधों के लिए सत्यापित किया जाएगा साथ ही कुकीज़ भी। विनाशकारी से मेरा मतलब उन अनुरोधों को बदलता है जो चीजें बदलते हैं, जमा करते हैं या हटाते हैं (यानी POSTs क्या होना चाहिए)।

अधिक जानकारी के लिए यहां देखें: http://www.html5rocks.com/en/tutorials/cors/

+0

मेरे एएसपी में।शुद्ध वेब-फॉर्म केस, यह कुकी भेज रहा है, यहां प्रीफलाइट के नियम हैं, 'यदि निम्न स्थितियां सत्य हैं तो ब्राउजर प्रीफलाइट अनुरोध छोड़ सकता है: अनुरोध विधि प्राप्त करें, HEAD, या POST, और एप्लिकेशन करता है स्वीकृति, स्वीकृति-भाषा, सामग्री-भाषा, सामग्री-प्रकार, या अंतिम-ईवेंट-आईडी, और सामग्री-प्रकार शीर्षलेख (यदि सेट है) के अलावा कोई भी अनुरोध शीर्षलेख सेट न करें: एप्लिकेशन/x- www-form-urlencoded मल्टीपार्ट/फॉर्म-डेटा टेक्स्ट/सादा ' – user960567

+0

लेकिन मैं फिर से जांच करूंगा और आपको पता चलेगा। धन्यवाद – user960567

+0

मुझे लगता है कि आप सही हैं - मैं संपादित करूंगा। – SilverlightFox

0

एक्सेस-कंट्रोल-अनुमति-उत्पत्ति हेडर को आपके लिए आवश्यक डोमेन के अलावा डोमेन को अस्वीकार करने के लिए उचित रूप से सेट किया जाना चाहिए। हालांकि यह केवल आधुनिक ब्राउज़रों के लिए काम करता है। http://encosia.com/using-cors-to-access-asp-net-services-across-domains/ http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity

+0

सुरक्षा लागू करने के लिए यह उचित जगह नहीं है। ब्राउज़र/क्लाइंट पर भरोसा नहीं किया जा सकता है। –

1

उल्लेख आसान समाधान पर लेकिन कि पूरी तरह से बुलेटप्रूफ क्या हम एक "प्रमाणन टोकन" कहते हैं नहीं है। आपकी वेबसाइट से आने वाली प्रत्येक पोस्ट में एक सीएसआरएफ टोकन होना चाहिए जो सुनिश्चित करने के लिए कि आप वास्तव में अपनी वेबसाइट से अनुरोध करते हैं, सर्वर सर्वर पर मान्य है। अधिक जानकारी के लिए इसे जांचें: http://shiflett.org/articles/cross-site-request-forgeries

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