Django CSRF protection middleware के साथ आता है, जो फ़ॉर्म में उपयोग के लिए एक अद्वितीय प्रति-सत्र टोकन उत्पन्न करता है। यह सही टोकन के लिए आने वाले POST
अनुरोधों को स्कैन करता है, और टोकन गुम या अवैध होने पर अनुरोध को अस्वीकार करता है।एक सत्र के सीएसआरएफ-सुरक्षा टोकन को सुरक्षित कर रहा है?
मैं कुछ POST अनुरोधों के लिए AJAX का उपयोग करना चाहता हूं, लेकिन कहा कि अनुरोधों में सीएसआरएफ टोकन availabnle नहीं है। पृष्ठों में <form>
तत्वों को हुक करने के लिए कोई नहीं है और मैं टोकन को छिपे हुए मान के रूप में डालने वाले मार्कअप को गड़बड़ नहीं करना चाहूंगा। मुझे यह करने का एक अच्छा तरीका है कि उपयोगकर्ता के टोकन को वापस करने के लिए /get-csrf-token/
जैसे वीव को बेनकाब करना है, शत्रुतापूर्ण साइटों को अनुरोध करने से रोकने के लिए ब्राउज़र के क्रॉस-साइट स्क्रिप्टिंग नियमों पर निर्भर होना।
क्या यह एक अच्छा विचार है? क्या AJAX अनुरोधों को अनुमति देते हुए सीएसआरएफ हमलों के खिलाफ सुरक्षा के बेहतर तरीके हैं?
सीएसआरएफ टोकन हर ऑपरेशन के साथ बदलना चाहिए। क्या आप सुझाव दे रहे हैं कि प्रत्येक ऑपरेशन टोकन अपडेट करें? इसका मतलब यह नहीं है कि उपयोगकर्ता के संचालन को तुल्यकालिक बनना होगा (दूसरा तब तक शुरू नहीं हो सकता जब तक कि पहले वापस नहीं आया और नया सीएसआरएफ टोकन दिया गया हो)। – Mystic
यह सबसे अच्छा जवाब नहीं है। जैसा कि कार्ल मेयर ने अपने जवाब में कहा है: डीजेगो * में टोकन * का उपयोग करके सीएसआरएफ से AJAX अनुरोधों की सुरक्षा करने की कोई आवश्यकता नहीं है, क्योंकि Django पहले से ही AJAX अनुरोधों को एक अलग तरीके से सुरक्षित करता है। यह रहस्यवादी चिंता को भी हटा देता है। – hopla
शायद यह मदद करेगा, भले ही मैंने इस कहानी को AJAX और CSRF के बारे में सॉर्ट नहीं किया है http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax – amirouche