2009-02-13 16 views
5

मैं मानक .NET सदस्यता प्रदाता का उपयोग कर रहा हूं, और सोचा कि मैं देखता हूं कि कोई इस पर प्रकाश डाल सकता है या नहीं।ValidateUser और अधिक क्यों नहीं लौटाता है?

कॉलिंग ValidateUser या तो सत्य या गलत लौटाता है। अब चूंकि विधि उपयोगकर्ता नाम और पासवर्ड स्वीकार करती है, इसलिए कोई कारण यह होगा कि रिटर्न परिणाम अमान्य उपयोगकर्ता नाम या पासवर्ड को प्रतिबिंबित करेगा। फिर भी अगर हम इसमें आगे बढ़ते हैं, तो हम पाते हैं कि यह IsLockedOut और IsAproved भी जांच रहा है।

public override bool ValidateUser (string username, string password) 
{ 
    MembershipUser user = GetUser (username, false); 
    /* if the user is locked out, return false immediately */ 
    if (user.IsLockedOut) 
     return false; 
    /* if the user is not yet approved, return false */ 
    if (!user.IsApproved) 
     return false; 
    ...... 

मेरे आवेदन में, मैं अपने स्वयं के साधनों के लिए स्वीकृत का उपयोग करना चाहता हूं। बस अपना खुद का प्रदाता रोलिंग काम नहीं करेगा क्योंकि मैं अभी भी एक बूल परिणाम के लिए बाध्य हूँ। एक उपयोगकर्ता बनाना हमें आवश्यक सारी जानकारी देता है, तो ValidateUser क्यों नहीं? क्या मैं कुछ भूल रहा हूँ?

उत्तर

9

मुझे उम्मीद है कि जो भी आप देख रहे हैं वह एक सुरक्षा निर्णय है - लौटाई गई जानकारी को सीमित करके, वे दुर्भावनापूर्ण पार्टियों को जानकारी प्रदान नहीं कर रहे हैं।

कल्पना कीजिए कि आप एक वेबसाइट में तोड़ने की कोशिश कर रहे सिरिल क्रैकर हैं।

परिदृश्य # 1: आप पासवर्ड "पासवर्ड" के साथ उपयोगकर्ता नाम "व्यवस्थापक" दर्ज करने का प्रयास करते हैं और सिस्टम आपको नहीं बताता है। आपके पास एकमात्र जानकारी यह है कि व्यवस्थापक/पासवर्ड वैध संयोजन नहीं है।

परिदृश्य # 2: आप पासवर्ड "पासवर्ड" के साथ उपयोगकर्ता नाम "व्यवस्थापक" दर्ज करने का प्रयास करते हैं और सिस्टम आपको बताता है कि उस नाम से कोई भी उपयोगकर्ता ज्ञात नहीं है। जब तक आप ज्ञात नहीं पाते हैं, तब तक आप अलग-अलग उपयोगकर्ता नामों को आजमा सकते हैं।

परिदृश्य # 3: आप पासवर्ड "पासवर्ड" के साथ उपयोगकर्ता नाम "व्यवस्थापक" दर्ज करने का प्रयास करते हैं और सिस्टम आपको बताता है कि कोई पासवर्ड अमान्य नहीं है। अचानक, आप जानते हैं कि "व्यवस्थापक" एक मान्य उपयोगकर्ता है। आपने कुछ उपयोगी सीखा है, और आपको अनुमान लगाने की आवश्यकता है पासवर्ड है।

परिदृश्य # 4: आप पासवर्ड "पासवर्ड" के साथ उपयोगकर्ता नाम "व्यवस्थापक" दर्ज करने का प्रयास करते हैं और सिस्टम आपको बताता है कि खाता अवरुद्ध है। अब, आप एक वैध उपयोगकर्ता नाम और पासवर्ड जानते हैं, और यह खाता अवरुद्ध है। आप बाद में वापस आ सकते हैं और पुनः प्रयास कर सकते हैं।

सिस्टम है कि क्या वैध है पर सेम गिर, और क्या नहीं, बातूनी सिस्टम रूप में जाना जाता है, और वे अच्छे कारण के लिए असुरक्षित माना जाता कर रहे हैं, के रूप में वे दरार करने के लिए आसान कर रहे हैं।

आशा है कि यह सहायक होगा।

+0

सही समझ में आता है! – mickyjtwin

+0

परिदृश्य # 4 के लिए, यदि मैं एक उपयोगी उपयोगकर्ता था, अतिरिक्त जानकारी के बिना, मैं अपने बालों को फाड़ रहा था ... उपयोगकर्ता नाम पासवर्ड कॉम्बो सही है, लेकिन मैं लॉग इन नहीं कर सकता! – escist

+1

@escist हाँ, और असली दुनिया में जब मेरा खाता बंद हो जाता है और मैं अंदर नहीं आ सकता, यह बिल्कुल मेरी प्रतिक्रिया है। कुंजी एक वैकल्पिक पथ है जो उपयोगकर्ता को यह पता लगाने की अनुमति देता है कि "सिरिल क्रैकर" को जानकारी दिए बिना क्या हो रहा है। कुछ साइटें उपयोगकर्ता को ईमेल किए गए एकल उपयोग यूआरएल पर भरोसा करती हैं, लेकिन अन्य दृष्टिकोण भी हैं। – Bevan

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