2010-12-01 11 views
5

मैं अपनी साइट पर सीएसआरएफ सुरक्षा का परीक्षण कर रहा हूं और मैंने कुछ अप्रत्याशित देखा है।क्या Django 1.2 में {% csrf_token%} सीएसआरएफ सुरक्षा टैग अभी भी जरूरी है?

मैंने अपने फॉर्म से {% csrf_token %} हटा दिया और सबमिशन अभी भी काम करता है। मैं क्यों काम नहीं कर सका। मैंने फिर स्रोत को देखा और महसूस किया कि टोकन अभी भी <form> तत्व के बगल में है। मैंने यह सुनिश्चित करने के लिए फॉर्म की आईडी बदल दी है कि यह निश्चित रूप से स्रोत को अपडेट कर रहा था और यह था लेकिन छुपा इनपुट अभी भी वहां है।

मैं Django 1.2 का उपयोग कर रहा हूं। {% csrf_token %} अभी भी आवश्यक है?

चीयर्स

रिच

+1

अधिक जांच के बाद यह प्रतीत होता है कि फ़ॉर्म में विधि 'पोस्ट' है और यदि नहीं, तो हमेशा {% csrf_token%} डाला जाता है। बहुत चालाक Django। ऑटो सुरक्षा। – Rich

+0

एक उत्तर के रूप में पोस्ट करें और इसे स्वीकार करें (आपको अपना उत्तर स्वीकार करने से पहले 24 घंटे का इंतजार करना पड़ सकता है)। –

उत्तर

2

प्रलेखन से:

Django 1.1 में, टेम्पलेट टैग मौजूद नहीं था। इसके बजाए, एक पोस्ट प्रोसेसिंग मिडलवेयर जो सीएसआरएफ टोकन को शामिल करने के लिए पोस्ट फॉर्म को फिर से लिखा गया था। यदि आप संस्करण 1.1 या उससे पहले की साइट को अपग्रेड कर रहे हैं, तो कृपया नीचे इस अनुभाग और Upgrading notes पढ़ें।

http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#legacy-method

4

अधिक जांच के बाद ऐसा लगता है {% csrf_token %} हमेशा करता है, तो प्रपत्र विधि post है डाला जाता है और नहीं है, तो ऐसा नहीं है। Django से बहुत चालाक ऑटो संरक्षण।

+1

मुझे विश्वास है कि यह केवल तब होता है जब आप अपने midware वर्गों में 'django.middleware.csrf.CsrfResponseMiddleware' जोड़ते हैं। अब इसकी अनुशंसा नहीं की जाती है। Http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#legacy-method देखें –

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