9

मैं समझता हूं कि डिफ़ॉल्ट रूप से रेल CSRFHTTP GET अनुरोधों के लिए सुरक्षा नहीं है, क्योंकि, दावा है कि वे बेवकूफ हैं। हालांकि, संवेदनशील जानकारी है जो उपयोगकर्ता को इन जीईटी अनुरोधों से वापस कर दी गई है, और, मैं इस जानकारी को पुनर्प्राप्त करने वाली दुर्भावनापूर्ण साइट नहीं चाहता हूं।रेल में HTTP GET अनुरोधों के साथ सीएसआरएफ संरक्षण

रेल में CSRF से HTTP GET अनुरोधों की रक्षा करने का सबसे अच्छा तरीका क्या है?

+1

एक दुर्भावनापूर्ण पार्टी है एक CSRF हमले वे अनुरोध का परिणाम नहीं दिख रहा है - केवल दुष्प्रभाव खतरनाक –

+0

आप आम तौर पर कार्य –

+0

इस तरह के लिए कुकीज़ के माध्यम से प्रमाणीकरण का उपयोग @NikitaBeloglazov यहां तक ​​कि अगर प्रमाणीकरण कुकी के माध्यम से होता है , जब ब्राउज़र पीड़ित की साइट के लिए अनुरोध देखता है तो ब्राउजर सामान्य रूप से पीड़ित वेबसाइट पर कुकी भेजता है। यह [विकिपीडिया लेख] से है (http://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics): "यदि बॉब का बैंक कुकी में अपनी प्रमाणीकरण जानकारी रखता है, और यदि कुकी समाप्त नहीं हुई है, तो बॉब के ब्राउज़र को छवि लोड करने का प्रयास उसकी कुकी के साथ वापसी फॉर्म जमा करेगा, इस प्रकार बॉब की मंजूरी के बिना लेनदेन को अधिकृत करेगा। " –

उत्तर

9

सीएसआरएफ हमले के अनुरोध के जवाब को पढ़ने में सक्षम होने के लिए, हमलावर को पीड़ित को अपने जावास्क्रिप्ट कोड को निष्पादित करने की आवश्यकता होगी। और उस स्थिति में, पहुंच Same Origin Policy द्वारा प्रतिबंधित होगी।

मान लिया जाये कि हमला अनुरोध है वास्तव में cross origin, Same Origin Policy for DOM डोम के माध्यम से पहुंच मनाही (जैसे जब iframe का उपयोग कर एम्बेडेड) और इस प्रकार Cross-Origin Resource Sharing (CORS)XMLHttpRequest के माध्यम से पार मूल अनुरोध को नियंत्रित करता है:

हैं अनुरोध एक simple cross-origin request है, मैं । ई। simple method केवल simple header fields के साथ, तो वह अनुरोध भेजा जाएगा (यह HTML- आधारित CSRF के समान है)। लेकिन एक साधारण क्रॉस-उत्पत्ति अनुरोध की प्रतिक्रिया तक पहुंच response allows resource sharing पर निर्भर करती है।

अन्य क्रॉस-मूल अनुरोधों को वास्तविक अनुरोध भेजने से पहले preflight की आवश्यकता होती है। यह अनुरोध यह जांचने के लिए भेजा जाता है कि क्या सर्वर प्रीफलाइट से भेजे गए मूल से अनुरोधों की अनुमति देता है या नहीं। और केवल अगर प्रीफलाइट सफल हो और वास्तविक अनुरोध की प्रतिक्रिया संसाधन साझा करने की अनुमति देती है, तो प्रतिक्रिया का उपयोग किया जा सकता है।

तो निष्कर्ष निकालने के लिए: जब तक आपका सर्वर सीओआरएस का समर्थन नहीं करता है और स्पष्ट रूप से किसी अन्य मूल (i। E। Access-Control-Allow-Origin: *) के साथ साझा करने की अनुमति देता है, एक सीएसआरएफ प्रतिक्रिया - अगर अनुरोध की अनुमति थी - हमलावर साइट द्वारा पठनीय नहीं होगा ।

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