2011-02-17 15 views
6

मेरे पास दो लवण हैं, प्रत्येक उपयोगकर्ता का एक अद्वितीय नमक होता है जो डेटाबेस में उपयोगकर्ता की जानकारी के साथ संग्रहीत होता है। दूसरा नमक वेबसाइट के लिए विशिष्ट है। पासवर्ड को हैश करने के लिए दोनों की आवश्यकता है।वेबसाइट के लिए पासवर्ड नमक स्टोर करने के लिए सबसे अच्छी जगह कहां है?

समस्या यह नहीं है कि मुझे नहीं पता कि मुझे अपनी वेबसाइट नमक कहां रखना चाहिए। अभी यह PHP पद्धति में रहता है जो हैशिंग एल्गोरिदम चलाता है। क्या मुझे इसे/var/www/के बाहर फ़ाइल में रखना चाहिए और PHP को खोलना और फ़ाइल पढ़ना चाहिए? मैं इसे डेटाबेस में संग्रहीत नहीं करना चाहता क्योंकि इससे मेरे डेटाबेस से समझौता किए जाने के दो लवण होने के उद्देश्य को हराया जाएगा।

कोई सुझाव?

+0

config.php फ़ाइल में स्थिर के रूप में? – Jonah

उत्तर

11

एक विकल्प अभी तक उल्लेख नहीं किया गया है? एक पर्यावरण चर सर्वर द्वारा परोसा जाता है। आप इसे httpd.conf में या .htaccess में कर सकते हैं। चूंकि Apache .htaccess फ़ाइलों की सेवा नहीं है, तो आप

SetEnv WEBSITE_SALT 232lhsdfjaweufha32i4fv4239tauvkjn 

जितना छुपा के बारे में चिंता ... इस तरह की जरूरत नहीं है, तुम सब अपने आवेदन में क्या करने की जरूरत $salt = getenv('WEBSITE_SALT'); है। यहां लाभ यह है कि यह एप्लिकेशन के लिए पारदर्शी है ...

+1

हर कोई आपको ऊपर क्यों नहीं उठा रहा है? यह भी खूब रही! – Undo

+0

मैं यहां एक समस्या देख सकता हूँ। अधिकांश अनुप्रयोगों में, उपयोगकर्ताओं के पास "पासवर्ड" या "लेटमेइन" जैसे ही पासवर्ड होते हैं। यदि आप एक ही नमक के साथ एक ही मान के एमडी 5 हैश उत्पन्न करते हैं, तो वही हैश वैल्यू जेनरेट किया जाता है, इस प्रकार एक संभावित हमलावर को पैटर्न का पता लगाने और एप्लिकेशन में उपयोगकर्ता पासवर्ड डालने की अनुमति मिलती है। मैं अजगर के hashlib के साथ एक ही नमक की कोशिश की: (नीचे निकालने) 'प्लेन = 'नमस्ते विश्व' नमक = '232lhsdfjaweufha32i4fv4239tauvkjn' h1 = hashlib.md5 (नमक + प्लेन) .hexdigest() h2 = hashlib.md5 (नमक + प्लेन) .hexdigest() प्रिंट h1 == h2 >> TRUE' –

5

हां, इसे किसी PHP कॉन्फ़िगरेशन फ़ाइल में कहीं भी रखें, अधिमानतः निर्देशिका के ऊपर वाले फ़ोल्डर में जो वेब रूट है।

0

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

0

बस इसे एक .php फ़ाइल के अंदर एक चर में चिपकाएं। सुरक्षा-दर-अंधकार जोड़ा की एक छोटी सी बिट के लिए, आप यह (माना) base64 एनकोडेड प्रारूप में स्टोर कर सकते हैं, और नाम चर कुछ पूरी तरह से अहानिकर, जैसे

$this_is_not_the_salt_you_are_looking_for = base64_decode(.... encoded salt string here ...); 

सुरक्षा की अतिरिक्त-अतिरिक्त बिट के लिए, वेबफॉट के बाहर कहीं भी .php फ़ाइल रखें, ताकि अगर किसी कारण से वेबसर्वर की कॉन्फ़िगरेशन पेट हो जाती है और कच्चे PHP कोड की सेवा शुरू होती है, तो नमक की जानकारी वाली फ़ाइल सीधे पहुंच योग्य नहीं होती है।

-3

अधिकांश लोग कॉन्फ़िगरेशन फ़ाइल में निरंतर नमक संग्रहित करेंगे। यह ठीक है, लेकिन एक एसएएलटी का उपयोग करने का पूरा बिंदु यह सुनिश्चित करना है कि आपका डेटा बाहरी स्रोत द्वारा पठनीय नहीं है।

मैंने देखा है कि बहुत से लोग वास्तव में खाते के क्षेत्र में डेटाबेस में नमक जमा करते हैं। हालांकि मोड़ यहाँ है। यह खाता निर्माण पर विशिष्ट रूप से उत्पन्न हुआ था ताकि प्रत्येक उपयोगकर्ता के पास अद्वितीय नमक हो।

हालांकि यह नमक के बारे में नहीं है - यह इस बारे में है कि आप डेटा को एन्क्रिप्ट कर रहे हैं।

sha1($password.md5(md5($password.md5($salt)))) 

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

+0

पहले, सीधे दूसरे के इनपुट में एक हैश समारोह के उत्पादन में फ़ीड नहीं। यह अच्छा नहीं है। दूसरा, बस उस विषम दिखने वाले कोड की बजाय सामान्य खींचें। अधिक जानकारी के लिए [यह पोस्ट] देखें (http://stackoverflow.com/questions/4948322/fundamental-difference-between-hashing-and-encryption-algorithms/4948393#4948393) और हैशिंग! = एन्क्रिप्शन। इसमें एक बड़ा अंतर है ... – ircmaxell

+0

विशेष गणित एल्गोरिदम का उपयोग करके आपका डबल पासवर्ड एमडी 5 हैशिंग को रिवर्स इंजीनियर किया जा सकता है (विशेष रूप से जब से एमडी 5 अब सुरक्षित नहीं है) – xorinzor

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

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