क्रॉस डोमेन फॉर्म पोस्टिंग


145

मैंने इस विषय पर सभी (एसओ सहित) लेख और पोस्ट देखे हैं, और प्रचलित टिप्पणी यह ​​है कि समान-मूल नीति पूरे डोमेन में एक POST को रोकती है। एकमात्र जगह जिसे मैंने देखा है कि कोई सुझाव देता है कि समान-मूल नीति फॉर्म पदों पर लागू नहीं होती है, यहां है

मैं एक अधिक "आधिकारिक" या औपचारिक स्रोत से उत्तर लेना चाहता हूं। उदाहरण के लिए, क्या कोई RFC को जानता है जो पता लगाता है कि समान-मूल POST को कैसे प्रभावित करता है या नहीं करता है?

स्पष्टीकरण : मैं यह नहीं पूछ रहा हूं कि क्या कोई GET या POST का निर्माण और किसी भी डोमेन को भेजा जा सकता है। मैं पूछ रहा हूँ:

  1. यदि Chrome, IE, या फ़ायरफ़ॉक्स डोमेन 'Y' से सामग्री को POST भेजने के लिए डोमेन 'X' की अनुमति देगा
  2. अगर POST प्राप्त करने वाला सर्वर वास्तव में किसी भी प्रकार के मूल्यों को देखेगा। मैं ऐसा इसलिए कहता हूं क्योंकि अधिकांश ऑनलाइन चर्चा रिकॉर्ड परीक्षक कहते हैं कि सर्वर को पद प्राप्त हुआ था, लेकिन फॉर्म मूल्य सभी खाली / छीन लिए गए थे।
  3. क्या आधिकारिक दस्तावेज (यानी RFC) बताता है कि अपेक्षित व्यवहार क्या है (इस बात पर ध्यान दिए बिना कि ब्राउज़र ने वर्तमान में क्या लागू किया है)।

संयोग से, यदि समान-उत्पत्ति, POST के रूप को प्रभावित नहीं करती है - तो यह कुछ हद तक स्पष्ट कर देता है कि विरोधी जालसाजी टोकन क्यों आवश्यक हैं। मैं "कुछ हद तक" कहता हूं क्योंकि यह विश्वास करना बहुत आसान है कि एक हमलावर केवल एक एंटी-जीईटी जारी कर सकता है ताकि विरोधी जालसाजी टोकन वाले फॉर्म को पुनः प्राप्त कर सके, और फिर एक अवैध POST बना सके जिसमें वही टोकन हो। टिप्पणियाँ?


हां, एक हमलावर ऐसा कर सकता है ... एक साधारण वेब ब्राउज़र के साथ।
माइकल हैम्पटन

शायद उसी कारण से कोई RFC नहीं हैं, इसलिए कोई RFC नहीं हैं जो कहते हैं: "अपनी वेबसाइट पर अपना पासवर्ड पोस्ट न करें"। वेब मानकों की आवश्यकता तब होती है जब कई पार्टियों को कुछ हासिल करने के लिए एक साथ काम करना चाहिए: एक ही मूल नीति "सुरक्षा सर्वोत्तम प्रथाओं" का एक जटिल सेट है जो उपयोगकर्ताओं को हैक होने से रोकती है।
सिरो सांटिल्ली 35 iro iro i 法轮功 '

@Ciro कृपया स्पष्ट रूप से कहें। अन्य साइटों पर क्रॉस-पोस्टिंग के नियम कई पार्टियों को प्रभावित नहीं करते हैं। धूमिल पार्लरों की जरूरत नहीं।
थोड़ा विदेशी

जवाबों:


175

वही मूल नीति केवल ब्राउज़र साइड प्रोग्रामिंग भाषाओं के लिए लागू है। इसलिए यदि आप जावास्क्रिप्ट का उपयोग करने वाले मूल सर्वर की तुलना में किसी भिन्न सर्वर पर पोस्ट करने का प्रयास करते हैं, तो वही मूल नीति चलन में आती है, लेकिन यदि आप सीधे फ़ॉर्म से पोस्ट करते हैं, तो कार्रवाई भिन्न सर्वर की ओर इंगित करती है:

<form action="http://someotherserver.com">

और फॉर्म पोस्ट करने में कोई जावास्क्रिप्ट शामिल नहीं है, फिर वही मूल नीति लागू नहीं होती है।

अधिक जानकारी के लिए विकिपीडिया देखें


18
एक पुराने प्रश्न को खींचने के लिए क्षमा करें, यदि जेएस का उपयोग करके कार्रवाई को बदल दिया गया था, लेकिन तब एक बटन का उपयोग करके फॉर्म को पोस्ट किया गया था, तो क्या होगा? क्या वह सफल क्रॉस-डोमेन पोस्ट के लिए अनुमति देगा?
क्रिस

AFAIK यह एक समस्या नहीं होनी चाहिए, लेकिन मैंने खुद इसकी कोशिश नहीं की है। यह जानना दिलचस्प होगा।
सुरेश कुमार

2
मैं उसी विचार का हूं। मुझे वास्तव में सुरक्षा के बारे में चिंता थी, कुछ तृतीय पक्ष जेएस / वायरस ने फॉर्म को कहीं दुर्भावनापूर्ण रूप से पोस्ट करने के लिए कार्रवाई को बदल दिया, लेकिन एहसास हुआ कि यह किसी भी भुगतान फॉर्म क्रॉस डोमेन पर प्राप्त किया जा सकता है या नहीं और परिणाम समान होगा। सबक यहाँ वास्तव में: किसी भी तृतीय पक्ष जेएस फ़ाइलों की जाँच करें;)
क्रिस

20
संक्षेप में: हाँ, क्रॉस-डोमेन पोस्टिंग की अनुमति है।
क्रिश्चियन डेवन

17
-1 के लिए: समान मूल नीति का किसी अन्य url (विभिन्न प्रोटोकॉल या डोमेन या पोर्ट) के लिए अनुरोध भेजने से कोई लेना-देना नहीं है, यह सब किसी अन्य url से (और इस तरह जावास्क्रिप्ट को दस्तावेज़ को अद्यतन करने से रोकना) प्रतिक्रिया डेटा तक पहुंच को प्रतिबंधित करने के बारे में है ऐसे प्रपत्र जो अन्य url से सुरक्षा टोकन हैं)।
मोहसिन

43

मनमाने ढंग से GET या POST अनुरोध का निर्माण करना और पीड़ितों के ब्राउज़र के लिए सुलभ किसी भी सर्वर पर भेजना संभव है। इसमें आपके स्थानीय नेटवर्क पर डिवाइस शामिल हैं, जैसे प्रिंटर और राउटर।

CSRF शोषण के निर्माण के कई तरीके हैं। एक सरल POST आधारित CSRF हमले को .submit()विधि का उपयोग करके भेजा जा सकता है । अधिक जटिल हमले, जैसे कि क्रॉस-साइट फ़ाइल अपलोड CSRF हमले xhr.withCreditals व्यवहार के CorS उपयोग का फायदा उठाएंगे

CSRF, JavaScrip t के लिए समान-मूल नीति का उल्लंघन नहीं करता है क्योंकि SOP जावास्क्रिप्ट से संबंधित है, जो क्लाइंट के अनुरोध पर सर्वर की प्रतिक्रिया को पढ़ता है। CSRF हमलों की प्रतिक्रिया के बारे में परवाह नहीं करते हैं, वे एक साइड-इफ़ेक्ट , या अनुरोध द्वारा उत्पादित राज्य परिवर्तन की परवाह करते हैं, जैसे कि एक प्रशासनिक उपयोगकर्ता को जोड़ना या सर्वर पर मनमाना कोड निष्पादित करना।

सुनिश्चित करें कि OWASP CSRF प्रिवेंशन चीट शीट में वर्णित विधियों में से एक का उपयोग करके आपके अनुरोध सुरक्षित हैं । CSRF के बारे में अधिक जानकारी के लिए CSRF पर OWASP पृष्ठ से परामर्श करें ।


मैंने अपना प्रश्न स्पष्ट करने के लिए अद्यतन किया है। इसके अलावा, आपके द्वारा दिया गया वर्डप्रेस लिंक में क्रॉस-डोमेन Y से आरंभ किए गए एक्स-मूल X के बजाय उन कारनामों को शामिल किया गया था ... इसलिए जो मैं देख रहा हूं उससे यह सही परिदृश्य नहीं है।
ब्रेंट एरियस

@ बर्ट एरियस हाँ, जो आप 1 और 2 में बता रहे हैं, वह बिल्कुल एक सीएसआरएफ के हमले के बराबर है, शायद आपको प्रदान किए गए किसी भी सीएसआरएफ कारनामे को अंजाम देने और यातायात को सूँघने की कोशिश करनी चाहिए। मैंने अपनी पोस्ट को अपडेट कर दिया है, आपको प्रदान की गई प्रत्येक लिंक को पढ़ना चाहिए क्योंकि यह इन सवालों के सटीक उत्तर देगा। "क्रॉस-साइट अनुरोध जालसाजी" (CSRF) हमले की बात यह है कि अनुरोध किसी अन्य डोमेन से उत्पन्न होता है, बशर्ते सभी कारनामे इस मूलभूत आवश्यकता को पूरी तरह से पूरा करते हैं।
मिकी

16

समान मूल नीति का किसी अन्य url (विभिन्न प्रोटोकॉल या डोमेन या पोर्ट) को अनुरोध भेजने से कोई लेना-देना नहीं है।

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

लेकिन जो इन POST अनुरोधों को अक्षम बनाता है, वह यह है कि इन अनुरोधों में एंटीफॉगररी टोकन की कमी होती है, इसलिए अन्य url द्वारा अनदेखा कर दिया जाता है। इसके अलावा, यदि जावास्क्रिप्ट उस सुरक्षा टोकन को प्राप्त करने की कोशिश करता है, तो पीड़ित यूआरएल को AJAX अनुरोध भेजकर, समान मूल नीति द्वारा उस डेटा तक पहुंचने से रोका जाता है।

एक अच्छा उदाहरण: यहाँ

और मोज़िला से एक अच्छा प्रलेखन: यहाँ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.