18
का उपयोग कर नमक का उपयोग

संभव डुप्लिकेट:
WebMatrix WebSecurity PasswordSaltजब SimpleMembershipProvider

वहाँ simpleMembershipProvider नमक का उपयोग करने के लिए एक तरीका है?

जब मैं अपने mvc4 वेब परियोजना बनाने और sqlexpress करने के लिए डिफ़ॉल्ट कनेक्शन सेट करें, फिर रजिस्टर, मेरे उपयोगकर्ताओं के पासवर्ड के नमक

नहीं है enter image description here

मैं इसे यह के रूप में के रूप में सुरक्षित होने के लिए चाहते हैं बहुत अधिक परेशानी के बिना कर सकते हैं।

उत्तर

25

पासवर्डसाल्ट कॉलम अप्रयुक्त है, लेकिन पासवर्ड फ़ील्ड में संग्रहीत हैश पासवर्ड बनाने के दौरान नमक का उपयोग किया जाता है। यदि आप SimpleMembershipProvider के लिए स्रोत कोड देखते हैं तो आप इसे देख सकते हैं: http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/3a669e7112e7#src%2fWebMatrix.WebData%2fSimpleMembershipProvider.cs

CreateUserAndAccount विधि की जांच करें। यह Crypto.HashPassword विधि का उपयोग करता:

/* ======================= 
    * HASHED PASSWORD FORMATS 
    * ======================= 
    * 
    * Version 0: 
    * PBKDF2 with HMAC-SHA1, 128-bit salt, 256-bit subkey, 1000 iterations. 
    * (See also: SDL crypto guidelines v5.1, Part III) 
    * Format: { 0x00, salt, subkey } 
    */ 

    public static string HashPassword(string password) 
    { 
     if (password == null) 
     { 
      throw new ArgumentNullException("password"); 
     } 

     // Produce a version 0 (see comment above) password hash. 
     byte[] salt; 
     byte[] subkey; 
     using (var deriveBytes = new Rfc2898DeriveBytes(password, SaltSize, PBKDF2IterCount)) 
     { 
      salt = deriveBytes.Salt; 
      subkey = deriveBytes.GetBytes(PBKDF2SubkeyLength); 
     } 

     byte[] outputBytes = new byte[1 + SaltSize + PBKDF2SubkeyLength]; 
     Buffer.BlockCopy(salt, 0, outputBytes, 1, SaltSize); 
     Buffer.BlockCopy(subkey, 0, outputBytes, 1 + SaltSize, PBKDF2SubkeyLength); 
     return Convert.ToBase64String(outputBytes); 
    } 

मूल रूप से आपकी चिंताओं को दूर करने के लिए, यह के रूप में सुरक्षित के रूप में यह आप किसी भी अतिरिक्त मुसीबत में जाने के लिए बिना की जरूरत है। documentation से

+0

हम्म, तो नमक कॉलम क्यों है?यदि नमक कॉलम उपयोगी है, तो संभव परिदृश्य क्या हैं जो हम कर सकते हैं? – jonprasetyo

+0

@jonprasetyo मुझे नहीं पता। मेरा सबसे अच्छा अनुमान यह है कि इसे पिछले प्रदाता स्कीमा से लाया गया था और जब हश के साथ नमक को एकीकृत करने के लिए निर्णय लिया गया था और इसे एक ही स्थान पर स्टोर किया गया था तो गिरा दिया नहीं गया था। –

2

उद्धरण:

डिजाइन करके, SimpleMembershipProvider वर्ग की कार्यक्षमता का पूरी श्रृंखला है कि ASP.NET सदस्यता प्रदाताओं में संभव है, के रूप में MembershipProvider वर्ग कि प्रयोग किया जाता है के रूप में परिभाषित लागू नहीं करता है सभी एएसपी.NET सदस्यता प्रदाताओं द्वारा। कुछ सदस्य कक्षा में उपलब्ध हैं क्योंकि उन्हें बेस क्लास से विरासत में मिला है, लेकिन यदि आप उन्हें एक्सेस करते हैं तो अपवाद फेंक देंगे।

अपनी वेबसाइट पूर्ण सदस्यता प्रदाता क्षमताओं की आवश्यकता है, आप वेब पेज सदस्यता प्रणाली के प्रारंभ के बजाय सुनिश्चित करें और ( है कि, WebSecurity.InitializeDatabaseConnection() फोन नहीं है) को छोड़ सकते हैं कि मानक सदस्यता और भूमिका प्रदाता सक्षम हैं। उस स्थिति में, आप सरल कॉलर्सशिपप्रोवाइडर क्लास को कॉल करते हैं जो मानक प्रदाता (जिसे सरलमेम्बरशिपप्रोवाइडर क्लास प्रलेखन में पिछले प्रदाता के रूप में जाना जाता है) के माध्यम से पारित किया जाता है। अधिक जानकारी के लिए, सदस्यता का उपयोग करने के लिए एएसपी.NET एप्लिकेशन को कॉन्फ़िगर करना देखें।

PasswordSalt क्षेत्र उन स्तंभों में से एक है। आप SimpleMembershipProvider के स्रोत कोड को देखो, तो आप देखेंगे कि PasswordSalt स्तंभ बस string.Empty पर सेट है:

if (database.Execute("INSERT INTO [" + MembershipTableName + "] (UserId, [Password], PasswordSalt, IsConfirmed, ConfirmationToken, CreateDate, PasswordChangedDate, PasswordFailuresSinceLastSuccess) VALUES (@0, @1, @2, @3, @4, @5, @5, @6)", new object[] { num, str, string.Empty, !requireConfirmationToken, obj3, DateTime.UtcNow, num2 }) != 1) 
{ 
    throw new MembershipCreateUserException(MembershipCreateStatus.ProviderError); 
} 

आप इसे उपयोग करने के लिए आप एक कस्टम सदस्यता प्रदाता है कि डिफ़ॉल्ट को ओवरराइड कर लिख सकते हैं चाहते हैं तो अगर एक और पासवर्डसाल्ट स्वयं उत्पन्न करें। आप CreateAccount विधि को ओवरराइड कर सकते हैं।

+0

डारिन, लेकिन पासवर्ड कॉलम में एक हैश पासवर्ड है। माइक्रोसॉफ्ट किस नमक का उपयोग करता है? मैक पता? – ilans