2010-05-20 11 views
6

मैं वेब ऐप में पासवर्ड प्रबंधन का सबसे सुरक्षित (लेकिन अभी तक करने योग्य) तरीका खोज रहा हूं।वेबएप पासवर्ड प्रबंधन - हैशिंग, सेलिंग, आदि

अभी, मैं पासवर्ड को हैश के रूप में सहेजता हूं। ऐप का डीबी खाता संग्रहीत प्रक्रियाओं के निष्कर्ष तक ही सीमित है और मैं उपयोगकर्ता को प्रमाणित प्रक्रिया में उपयोगकर्ता नाम और हैश पासवर्ड देकर प्रमाणित करता हूं जो 1 (सत्य) या 0 (झूठा) देता है।

तो सर्वर से पासवर्ड प्राप्त करने का कोई मौका नहीं है, भले ही आपके पास ऐप का डीबी खाता हो। मुझे इस समाधान के बारे में क्या पसंद है। लेकिन इसका उपयोग करने के लिए, क्लाइंट को वेब पर अपना पासवर्ड जमा करना होगा, या कम से कम एक स्थिर हैश जिसे पकड़ लिया जा सकता है।

  • ग्राहक नमक के लिए सर्वर पूछते हैं:

    तो मैं इस तरह एक हाथ मिलाना का उपयोग करने का विचार आया था।

  • रैंडम नमक क्लाइंट को दिया जाता है और इस एकल क्लाइंट के लिए सर्वर पर संग्रहीत किया जाता है। इसकी एक ही तो ग्राहक

से हाथ मिलाना का उपयोग करते हुए यह जांच करने के लिए संभव बनाता है, तो

  • ग्राहक हैश (नमक + पासवर्ड) बनाता है और सर्वर के लिए इस हैश रिटर्न
  • सर्वर हैश (नमक + पासवर्ड) और चेक बनाता है खुद को भेजने के बिना पासवर्ड या इसके एक स्थिर हैश। बस एक गतिशील नमकीन हैश, यह हर बार भिन्न होता है जब उपयोगकर्ता => अत्यधिक सुरक्षित होता है।

    लेकिन इस हैंडशेक के लिए मुझे पासवर्ड की आवश्यकता है या कम से कम डीबी से हैश पासवर्ड। लेकिन यह किसी को कम से कम हैश पासवर्ड प्राप्त करने और ऐप के बाहर इसे ब्रूटफोर्स करने में सक्षम बनाता है।

    आप क्या पसंद करेंगे? डीबी के अंदर पासवर्ड रखना और वहां कुछ भी (सुरक्षित सर्वर) बनाना, या इसे डीबी से बाहर निकालना और इसे बाहर करना (सुरक्षित संचरण) करना?

    अग्रिम धन्यवाद, मार्क्स

  • उत्तर

    3

    आपका प्रस्तावित समाधान वास्तव में समस्या का समाधान नहीं है। सर्वर को फिर भी पासवर्ड पता होना है, इसलिए इसे किसी बिंदु पर स्थानांतरित किया जाना था, जो आप पहले स्थान से बचाना चाहते थे। इस तरह आप केवल हर बार फिर से भेजे जाने वाले पासवर्ड से बचते हैं, लेकिन अगर किसी ने इसे पहली बार पकड़ा तो इसे स्थानांतरित कर दिया गया था?

    मुझे लगता है कि आपको पहिया को फिर से नहीं बदला जाना चाहिए :-) सभी कनेक्शनों के लिए एसएसएल का उपयोग करें और फिर आपके पहले समाधान ठीक काम करते हैं। आप क्लाइंट साइड पर हैशिंग भी कर सकते हैं, इसलिए केवल हैश को सुरक्षित चैनल पर भेजा गया है। आपका सर्वर पासवर्ड कभी नहीं जानता, और इसे नहीं करना है।

    +1

    सहमत हैं, एसएसएल पर्याप्त सुरक्षित होना चाहिए। निश्चित रूप से डेटाबेस में पासवर्ड भी हैश, हालांकि एमडी 5 इन दिनों संदेह है इसलिए मैं ऐसा करने के लिए एक और अधिक सुरक्षित हैश एल्गोरिदम का उपयोग कर सकता हूं। आपका प्रस्तावित हैंडशेक एमएस-सीएएपी के समान है जो भी संदेह है। –

    +0

    आप सही हैं, लेकिन मुझे लगता है कि उपयोगकर्ता को लॉग इन करने में निम्नलिखित सैकड़ों या हजारों बार में से एक की तुलना में पासवर्ड कम हो गया है। मेरा कनेक्शन एसएसएल नेटर कम है, मैं बस कुछ अतिरिक्त सुरक्षा चाहता था । अभी मैं SHA1 हैश में निर्मित फॉर्म प्रमाणीकरण का उपयोग करता हूं, लेकिन मुझे किसी अन्य स्थान पर SHA-256 की आवश्यकता है, इसलिए मुझे लगता है कि मैं उस पर स्विच करूंगा। आपको लगता है कि संग्रहित प्रक्रिया GetUser को हैश पासवर्ड वापस करना चाहिए? या बस बदले में शून्य वापस? – Marks

    +1

    जब आप "सुरक्षा" के बारे में बात करते हैं, तो आप हमेशा सबसे खराब स्थिति परिदृश्य मानते हैं। आप मानते हैं कि हमलावर हमेशा मौजूद होता है और अधिकतम प्रभावशीलता के साथ आपके सिस्टम में हर कमजोरी का शोषण करता है।इस अर्थ में, यह फर्क नहीं पड़ता कि वह एक बार या एक सौ गुना अपना पासवर्ड पढ़ सकते हैं, तथ्य यह है कि वह इसे पढ़ सकते हैं। अपने ग्राहकों को आप कहते हैं :-) अपने संग्रहीत प्रक्रिया हैश या 'null' आप पर निर्भर है देता है चाहे" यह बहुत संभावना एक हमलावर अपना पासवर्ड पढ़ सकते हैं नहीं है "सुनने के लिए नहीं करना चाहते, सर्वर अन्य साधनों के साथ रक्षा की जानी चाहिए वैसे भी दूरदराज के उपयोग को रोकने के लिए (फ़ायरवॉल, सुरक्षा पैच, ...) –

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