2012-09-15 19 views
5

मैं django व्यवस्थापक में लॉग इन करें। जब मैं फ़ायरबग जेएस कंसोल खोलता हूं और document.cookie के साथ कुकीज़ प्रिंट करने का प्रयास करता हूं तो मुझे केवल csrftoken कुकी मिलती है। लेकिन जब मैं फ़ायरफ़ॉक्स प्राथमिकताएं खोलता हूं> गोपनीयता> कुकी हटाएं ... तो मैं sessionid कुकी देख सकता हूं।मुझे ग्राहक पक्ष पर 'sessionid' क्यों नहीं मिल सकता है?

क्लाइंट साइड पर इसे कैसे प्राप्त करें?

उत्तर

9

आप सत्र कुकी उपयोग कर सकते हैं नहीं है क्योंकि यह डिफ़ॉल्ट HTTPOnly करने के लिए सेट कर रहा है docs से

प्रतिलिपि बनाई जा रही (आप इसे Firebug (संसाधन> Cookies-> sessionid के HTTP स्तंभ चेक किया जाता है) का उपयोग कर देख सकते हैं):।

SESSION_COOKIE_HTTPONLY 
Default: True 

Whether to use HTTPOnly flag on the session cookie. 
If this is set to True, client-side JavaScript will not to 
be able to access the session cookie. 

आप सेट कर सकते हैं: SESSION_COOKIE_HTTPONLY = False अपने settings.py में आप वास्तव में ग्राहक के पक्ष कोड से इस तक पहुंच हो करना चाहते हैं। फिर भी यह एक अनुशंसित अभ्यास नहीं है।

+4

सिर्फ एक नोट है कि यह अनुशंसित अभ्यास की वजह यह नहीं है कि यदि आपकी साइट XSS के लिए किसी भी तरह से अतिसंवेदनशील है, तो एक हमलावर सत्र आईडी चुरा लेने के लिए इसका उपयोग कर सकता है। यह निश्चित नहीं है यदि सत्र आईडी जेएस भूमि के संपर्क में नहीं आती है। –

+0

दस्तावेज़ों से एक और नोट: "इसे छोड़ने के लिए बहुत बहाना नहीं है, या तो: यदि आपका कोड जावास्क्रिप्ट से सत्र कुकीज़ पढ़ने पर निर्भर करता है, तो आप शायद इसे गलत कर रहे हैं।" – cs01