MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

mongodb में पासवर्ड फ़ील्ड एन्क्रिप्ट करें

टिप्पणियों में बातचीत के अनुसार, आपका मतलब हैशिंग . है पासवर्ड, एन्क्रिप्टिंग नहीं पासवर्ड। रेनबो टेबल अटैक को रोकने के लिए आप आमतौर पर नमक के साथ ऐसा करेंगे। जब डेटाबेस में पासवर्ड संग्रहीत करने की बात आती है तो पासवर्ड को नमकीन हैश के रूप में संग्रहीत करना सबसे अच्छा अभ्यास मानक है।

संस्करण 3.2 के अनुसार, MongoDB के पास पासवर्ड हैशिंग के लिए कोई मूल समर्थन नहीं है जैसे कुछ SQL डेटाबेस प्रदान करते हैं, इसलिए आपको इसे जावा में लागू करना होगा।

नया खाता बनाने या मौजूदा खाते का पासवर्ड बदलने के लिए:

  1. के साथ क्रिप्टोग्राफ़िक रूप से सुरक्षित रैंडम सॉल्ट मान जेनरेट करें java.security.SecureRandom . यह वर्ग मानक यादृच्छिक संख्या जनरेटर की तरह काम करता है java.util.Random (यह एक उपवर्ग है) लेकिन सुरक्षा-प्रासंगिक संदर्भ के लिए आवश्यक गैर-पूर्वानुमान के उच्च स्तर के लिए प्रदर्शन का व्यापार करता है।
  2. नमक और पासवर्ड को जोड़कर एक स्ट्रिंग बनाएं
  3. क्रिप्टोग्राफ़िक रूप से सुरक्षित हैश फ़ंक्शन के साथ उस स्ट्रिंग का हैश जेनरेट करें। जावा आउट-ऑफ-द-बॉक्स द्वारा प्रदान किए गए कई हैश फ़ंक्शन हैं, लेकिन आप एक का उपयोग करना चाहते हैं जो जानबूझकर गणना करने के लिए एक हमलावर को धीमा करने के लिए डेटाबेस एक्सेस के साथ अपने स्थानीय सुपरकंप्यूटर क्लस्टर पर अपने हैश को जबरदस्ती करने की कोशिश कर रहा है। एक अच्छा उम्मीदवार "PBKDF2WithHmacSHA1" एल्गोरिदम है जो javax.crypto.SecretKeyFactory कक्षा।
  4. दस्तावेज़ को MongoDB में username फ़ील्ड के साथ सहेजें , password_hash और password_salt (साथ ही आपका वास्तविक एप्लिकेशन डेटा, निश्चित रूप से)। मूल पासवर्ड सेव न करें।

खाता पुनः प्राप्त करने के लिए:

  1. username_input पढ़ें और password_input कथित उपयोगकर्ता ने आपके लॉगिन फ़ॉर्म में प्रवेश किया है।
  2. दस्तावेज़ को पुनः प्राप्त करें जहाँ username username_input . से मेल खाता है उपयोगकर्ता द्वारा प्रदान किया गया।
  3. password_salt प्राप्त करें उस दस्तावेज़ से फ़ील्ड
  4. password_salt . को जोड़कर एक स्ट्रिंग बनाएं और password_input जैसा आपने पहले किया था।
  5. उसी क्रिप्टोग्राफ़िक रूप से सुरक्षित हैश फ़ंक्शन के साथ उस स्ट्रिंग का हैश जेनरेट करें।
  6. हैश की तुलना password_hash से करें दस्तावेज़ का क्षेत्र। जब यह मेल खाता है, तो उपयोगकर्ता ने सही पासवर्ड दर्ज किया।

आप वैकल्पिक रूप से केवल दस्तावेज़ के पासवर्ड_हैश और पासवर्ड_साल्ट फ़ील्ड को पुनः प्राप्त कर सकते हैं और उपयोगकर्ता के प्रमाणीकृत होने से पहले बाकी को लोड नहीं कर सकते हैं, लेकिन मुझे लगता है कि वास्तविक दुनिया में इससे अधिक लोड होगा जो इसे बचाएगा। सफल लॉगिन आमतौर पर असफल लोगों से बहुत अधिक होंगे, जब तक कि आपके पास कोई हमलावर न हो जो किसी खाते को क्रूर-बल देने का प्रयास करता हो। और उस स्थिति में आप हमलावर को fail2ban से ब्लॉक कर देंगे। या अन्य लॉगिन-सीमित तंत्र।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. NoSql डेटाबेस (MongoDB) में विदेशी कुंजियों को कैसे लागू करें?

  2. मोंगोडब 3.0 जावा सम्मिलित करेंएक

  3. डोकर-लिखें का उपयोग कर मोंगोडब से कैसे कनेक्ट करें?

  4. मोंगो में सरणी आकार के साथ फ़ील्ड सम्मिलित करें

  5. यादृच्छिक रिकॉर्ड प्राप्त करना और PHP और MongoDB का उपयोग करके विशेष प्रारूप में प्रदर्शित करना