2010-11-29 5 views
5

में SetAuthCookie() का उपयोग करके केवल उपयोगकर्ता को स्टोर करना सुरक्षित है। मैं सोच रहा था कि फॉर्म में प्रमाणीकरण.SetAuthCookie() का उपयोग करके कुकी में केवल UserId (डेटाबेस में प्राथमिक कुंजी) को स्टोर करना सुरक्षित था या नहीं और इसे सहेजना स्थायी कुकी?क्या एएसपी.NET

मैंने बहुत उदाहरण देखा है जहां लोग उपयोगकर्ता नाम सहेजते हैं लेकिन यह (उपयोगकर्ता आईडी) एक या दो अंकों का नंबर हो सकता है जो मुझे लगता है कि इसे प्राप्त करना और भी आसान हो सकता है। तो मेरा सवाल यह है कि मुझे यह करना चाहिए? यदि नहीं, तो अगर मैं केवल उपयोगकर्ता नाम सहेजता हूं तो यह और बेहतर क्यों होगा? (जो फिर से एक संक्षिप्त नाम हो सकता है)

उत्तर

4

यह सुरक्षित नहीं है यदि आप उस मान को अनएन्क्रिप्टेड स्टोर करते हैं और उसके बाद उस मान को कुकी से वापस पढ़ें और उसके बाद के अनुरोधों पर उपयोगकर्ता की पहचान प्रमाणित करने के लिए इसका उपयोग करें (उपयोगकर्ता नाम का उपयोग करके यह भी असुरक्षित होगा)।

यह सुरक्षित नहीं है क्योंकि कुकी में मूल्य बदलने के लिए यह छोटा है और फिर उपयोगकर्ता किसी अन्य उपयोगकर्ता की पहचान को कम कर सकते हैं।

यह सुरक्षित है, हालांकि, यदि आप उपयोगकर्ता आईडी को FormsAuthenticationTicket.UserData और encrypt the ticket में संग्रहीत करते हैं।

+9

यह उत्तर पूरी तरह सटीक नहीं है। FormsAuth टोकन की * संपूर्ण * सामग्री एन्क्रिप्टेड और हस्ताक्षरित हैं, जिसमें उपयोगकर्ता नाम/उपयोगकर्ता आईडी शामिल है, इसलिए इसे छेड़छाड़ नहीं किया जा सकता है। SetAuthCookie के पैरामीटर के रूप में उपयोगकर्ता नाम के बजाय उपयोगकर्ता आईडी को पास करना मूलभूत रूप से सुरक्षा गुणों को परिवर्तित नहीं करता है, या तो सकारात्मक या नकारात्मक। – Levi

+2

आप सही हैं; मैंने प्रश्न को जल्दी से पढ़ा और SetAuthCookie का उपयोग करने के लिए विशिष्ट संदर्भ को याद किया। –

0

मुझे नहीं लगता कि लोगों को अभी UserID (यह की आवाज़ से) के साथ ज्यादा कर सकता है या एक डेटाबेस में एक प्राथमिक कुंजी के साथ