2012-08-05 28 views
5

के साथ त्रुटियां हमारे पास एक छोटी सी साइट है जो अभी बाहरी दुनिया के संपर्क में आने लग रही है। अधिकांश भाग के लिए यह बहुत अच्छी तरह से काम कर रहा है लेकिन हमें कभी-कभी फ़ॉर्म में से एक से "सीएसआरएफ FAILURECSRF कुकी सेट नहीं" संदेश के साथ 403 त्रुटियां मिल रही हैं। प्रपत्र निश्चित रूप से {% csrf_token %} शामिल है, और हमारे मिडलवेयर इस तरह दिखता है:स्पोराडिक 403 "सीएसआरएफ FAILURECSRF कुकी सेट नहीं है" django

MIDDLEWARE_CLASSES = (
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
) 

प्रपत्र ज्यादातर लोगों के लिए ठीक काम करता है, लेकिन के बारे में दिन में एक बार मैं एक विफलता के मामले के साथ एक ई-मेल मिलता है। ई-मेल वास्तविक अनुरोध है, जो इस तरह दिखता भी शामिल है (मैं पोस्ट डेटा निजी डेटा को छिपाने के लिए के बाकी को हटा दिया है, लेकिन csrfmiddlewaretoken छोड़ दिया):

<WSGIRequest 
path:/main/10/apply/, 
GET:<QueryDict: {}>, 
POST:<QueryDict: {u'csrfmiddlewaretoken': [u'IQQZvbVIggJm6Be6VinPHj8Qn3i3TdmG']}>, 
COOKIES:{}, 
META:{'CONTENT_LENGTH': '111978', 
'CONTENT_TYPE': 'multipart/form-data; boundary=----WebKitFormBoundaryLyo9BPXnAwKnt8ew', 
'CSRF_COOKIE': 'XmSPWJZk2UwS4PNBXRmVlAaYDDdNaGqk', 

CSRF_COOKIE csrfmiddlewaretoken से मेल नहीं खाता , जो मैं मान रहा हूं वह समस्या पैदा कर रहा है, लेकिन मैं यह नहीं समझ सकता कि ये कुछ सबमिशन के लिए सिंक से बाहर क्यों हैं लेकिन दूसरों को नहीं। पृष्ठ केवल कुछ फ़ील्ड के साथ एक बहुत ही सरल रूप है।

मुझे कहां देखना चाहिए इसके लिए कोई सुझाव? मैं apache के माध्यम से mod_wsgi का उपयोग कर CentOS पर नवीनतम Django 1.4.1 चला रहा हूँ।

संपादित करें: केवल दूसरी बात यह है कि सफल अनुरोध की तुलना में अजीब लगता है कि यहाँ COOKIES:{} अनुभाग खाली है, जो मुझे नेतृत्व पर शक करने कि शायद वे अपने ब्राउज़र में कुकी अक्षम होता है, लेकिन फिर क्यों करता है यह मेटा सेक्शन में सीएसआरएफ_COOKIE के साथ दिखाई देता है?

आपकी मदद के लिए धन्यवाद!

ब्रैंडन

+0

मैं इस सटीक समस्या में भाग रहा हूं। क्या आपने कभी समाधान निकाला है? –

+0

का क्रमबद्ध करें। समस्या यह थी कि कुछ उपयोगकर्ताओं ने कुकीज़ बंद कर दी थी, और सर्वर पक्ष से इसे ठीक करने का कोई तरीका नहीं है। हमने जनता के सामने के रूप में सीएसआरएफ सुरक्षा को बंद कर दिया। लॉगिन पृष्ठों या अन्य संवेदनशील डेटा के लिए ऐसा न करें, लेकिन सीएसआरएफ सुरक्षा हमेशा सख्ती से जरूरी नहीं है। – brandon

उत्तर

0

क्या HTTP_COOKIE भी रिक्त है?

यह डीजेंगो अनुरोध में सीएसआरएफ टोकन कुकी नहीं देख सकता है, और यह नया CSRF_COOKIE उत्पन्न कर रहा है और इसे मेटा में डाल रहा है।