2010-02-11 5 views
6

मेरी वेब प्रोजेक्ट में setting to turn on httpOnlyCookies वहां नहीं है। यह डिफ़ॉल्ट रूप से गलत है। इसके अलावा कोड में कोई जगह नहीं है जहां कुकी केवल एचटीपी पर सेट की जा रही है। हालांकि, जब मैं साइट पर ब्राउज़ करता हूं तो मैं देख सकता हूं कि एएसपी.NET_ सत्र कुकी केवल एचटीपी के रूप में पारित की जा रही है। यह कैसे केवल सेट करने के लिए सेट है?एचटीपी केवल एएसपी.NET_SessionId कुकी के लिए सेट कैसे हो सकता है?

उत्तर

14

एएसपी.NET सत्र कुकीज़ केवल आपके HTTP में httpOnlyCookies सेटिंग के बावजूद HTTP हैं, क्योंकि यह एएसपी.NET में जला दिया गया है। आप इसे ओवरराइड नहीं कर सकते हैं।

आप System.Web विधानसभा ASP.NET सत्र कुकी बनाने के लिए कोड लगता है कि में System.Web.SessionState.SessionIDManager वर्ग में खुदाई हैं:

private static HttpCookie CreateSessionCookie(string id) 
{ 
    HttpCookie cookie = new HttpCookie(Config.CookieName, id); 
    cookie.Path = "/"; 
    cookie.HttpOnly = true; // <-- burned in 
    return cookie; 
} 
+2

यहां प्रलेखन मिला: http://msdn.microsoft.com/en-us/library/aa480476.aspx "एचटीपी केवल। यह गुण निर्दिष्ट करता है कि कुकी क्लाइंट स्क्रिप्ट द्वारा एक्सेस किया जा सकता है या नहीं। ASP.NET 2.0 में, यह मान हमेशा सत्य पर सेट किया जाता है। " –

+1

@dev - मैंने बस सिस्टम में खोला है। Web.dll असेंबली एक चोटी लेने के लिए :) – Kev

+0

इसके नीचे का हिस्सा भी महत्वपूर्ण है। पुराने ब्राउज़र केवल एचटीपी का समर्थन नहीं करते हैं, और या तो कुकी को अनदेखा कर सकते हैं या विशेषता को अनदेखा कर सकते हैं, बाद में एक्सएसएस हमलों के लिए आपकी साइट को खुलता है। –

1

यह केवल Http है तो अपने सत्र कुकी ग्राहक द्वारा बदला नहीं जा सकता जावास्क्रिप्ट के साथ।

+0

सही। मैं उस हिस्से को जानता था। मैंने अपने सवाल को "क्यों" से "यह कैसे सेट किया है?" से दोहराया –

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