2009-02-07 15 views
49

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

  • पदबंध प्रश्न/उत्तर (1 या अधिक) स्क्रीन पर नया पासवर्ड
  • साथ
  • भेजने ईमेल नया पासवर्ड देना
  • ईमेल के माध्यम से पुष्टि: एक नया पासवर्ड

क्या संयोजन या इसके अलावा दर्ज करवा नया पासवर्ड प्राप्त करने

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

    मैं प्रिंसिपल पर काम कर रहा हूं कि पासवर्ड पुनर्प्राप्त नहीं किया जा सकता है; एक नया पासवर्ड दिया/उत्पन्न किया जाना चाहिए।

    संपादित करें मुझे यह पसंद है कि क्या उपयोगकर्ता नाम मौजूद है या नहीं, लेकिन मुझे आश्चर्य है कि इसके बजाय क्या प्रदर्शित करना है। मैं आधा समस्या सोच रहा हूं कि उपयोगकर्ता भूल गया कि वे किस ईमेल पते का इस्तेमाल करते हैं, जो किसी प्रकार का "अस्तित्व में नहीं है" संदेश प्रदर्शित करता है। कोई समाधान?

  • उत्तर

    45
    1. मैं व्यक्तिगत रूप से एक अल्पकालिक पृष्ठ के लिंक के साथ एक ईमेल भेजता हूं जो उन्हें एक नया पासवर्ड सेट करने देता है। पृष्ठ का नाम किसी प्रकार का यूआईडी बनाएं।
    2. यदि यह आपके लिए अपील नहीं करता है, तो उन्हें एक नया पासवर्ड भेजना और उन्हें पहले पहुंच पर बदलने के लिए मजबूर करना भी होगा।

    विकल्प 1 बहुत आसान है।

    +13

    विकल्प 1 का भी उपयोगकर्ता पर डीओएस हमलों के लिए अतिसंवेदनशील होने का लाभ नहीं है। उदाहरण के लिए, कोई विकल्प विकल्प 2 में "रीसेट पासवर्ड" लिंक पर लगातार क्लिक करता है, इसलिए उपयोगकर्ता प्रभावी रूप से अपने खाते से लॉक हो जाता है। आप इसके खिलाफ सुरक्षा कर सकते हैं, लेकिन परेशान क्यों? विकल्प 1 जाने का तरीका है ... ध्वनि, सरल सुरक्षा सलाह के दुर्लभ उदाहरण के लिए –

    +0

    +1। बहुत बढ़िया। –

    +0

    किसी भी कारण से उपयोगकर्ता को नया पासवर्ड सेट करने के बाद लॉग इन नहीं किया जाना चाहिए? – Tommy

    8

    नए पासवर्ड के साथ ईमेल भेजें।

    जब वे पहुंचते हैं और नए पासवर्ड में कुंजी पासवर्ड बदलते हैं तो पासवर्ड बदल जाता है।

    यह सुनिश्चित करता है कि वह व्यक्ति जो पासवर्ड चाहता था वह केवल खाते में ही होगा।

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

    उपयोगकर्ताओं को पासवर्ड परिवर्तन की पुष्टि भी भेजें।

    अगर किसी को नया पासवर्ड मिलता है, और फिर एक ईमेल "पासवर्ड बदलने के लिए thanx" कहता है, तो वे बदले में जा रहे हैं और अगर वे ऐसा नहीं करते हैं तो व्यवस्थापक से बात करेंगे।

    +0

    आईएमओ बुरा विचार। असली पार्टी ग्राहक समर्थन से संपर्क करने में सक्षम होने से पहले स्निफ़ेर बहुत नुकसान पहुंचा सकता था। – user1069528

    0

    विकल्प 1. एक अच्छा विचार नहीं है, क्योंकि आमतौर पर वह दूसरों द्वारा आसानी से अनुमान लगाया जाता है। सारा पॉलिन का निजी ईमेल (याहू मुझे लगता है) इस तरह से किसी तीसरे पक्ष द्वारा हैक किया गया था।

    अन्य विकल्प बेहतर हैं और पिछली पोस्टों ने विस्तार को रेखांकित किया है।

    +1

    आप लंबे समय से यादृच्छिक रूप से जेनरेट किए गए तारों को "आसानी से अनुमान" कैसे देते हैं? – slikts

    +0

    मेरा 'विकल्प 1' संदर्भ अब अन्य पदों के साथ स्पष्ट नहीं है - यह ओपी द्वारा प्रस्तुत किए गए पहले विकल्प को संदर्भित करता है। इसने 'गुप्त प्रश्न' का उपयोग करने के सुझाव को संदर्भित किया, अगर सही ढंग से उत्तर दिया गया हो तो 'आप किस हाईस्कूल में भाग लेते थे?' यह अस्पष्ट होने के लिए खेद है। – Jayden

    1

    ईमेल सत्यापन/पासवर्ड रीसेट लिंक का उपयोग करके आपको बेहतर सुरक्षा मिल जाएगी। यदि आप इस बारे में देखते हैं तो अधिकांश वेबसाइटें यह कैसे करती हैं और लोगों को इस सत्यापन के लिए बहुत उपयोग किया जाता है, इसलिए मैं इस प्रकार के प्रमाणीकरण का उपयोग करने की सलाह दूंगा।

    24

    कुछ महत्वपूर्ण सुरक्षा चिंताओं:

    • एक पदबंध प्रश्न/उत्तर वास्तव में सुरक्षा को कम करती है क्योंकि इसे आमतौर पर इस प्रक्रिया में सबसे कमजोर कड़ी बन जाता है। किसी पासवर्ड के मुकाबले किसी के जवाब का अनुमान लगाना अक्सर आसान होता है - खासकर यदि प्रश्नों को ध्यान से नहीं चुना जाता है।
    • मानते हैं कि ईमेल आपके सिस्टम में उपयोगकर्ता नाम (जिसे आमतौर पर विभिन्न कारणों से अनुशंसित किया जाता है) के रूप में कार्य करता है, पासवर्ड रीसेट अनुरोध की प्रतिक्रिया से संकेत नहीं मिलता है कि वैध खाता मिला है या नहीं। यह केवल यह कहना चाहिए कि प्रदान किए गए पते पर एक पासवर्ड अनुरोध ईमेल भेजा गया है। क्यूं कर? एक प्रतिक्रिया यह दर्शाती है कि एक ईमेल मौजूद/मौजूद नहीं है, एक हैकर कई पासवर्ड अनुरोध सबमिट करके उपयोगकर्ता खातों की एक सूची फसल करने की अनुमति देता है (आमतौर पर एक HTTP प्रॉक्सी जैसे burp suite के माध्यम से) और यह नोट करते हुए कि ईमेल मिला है या नहीं। लॉगिन कटाई से बचाने के लिए आपको किसी भी लॉगिन/एथ संबंधित फ़ंक्शंस को आश्वस्त करना होगा कि किसी वैध उपयोगकर्ता का ईमेल लॉगिन/पास रीसेट फॉर्म पर कब दर्ज किया गया हो।

    अधिक पृष्ठभूमि के लिए, Web Application Hackers Handbook चेकआउट करें। यह सुरक्षित प्रमाणीकरण मॉडल बनाने पर एक उत्कृष्ट पढ़ा है।

    संपादित:। अपने संपादन में सवाल के बारे में - मेरा सुझाव चाहते हैं:

    "एक पासवर्ड अनुरोध ईमेल पते पर भेज दिया गया है, तो एक ईमेल शीघ्र ही नहीं पहुंचता है, , कृपया अपने स्पैम फ़ोल्डर की जांच करें। यदि ईमेल आता है, तो आपके द्वारा प्रदान किए गए ईमेल के साथ कोई खाता मौजूद नहीं है। "

    उपयोग और सुरक्षा के बीच यहां एक व्यापार-बंद किया जा रहा है। आपको संदर्भ के आधार पर इसे संतुलित करना होगा - क्या यह सुरक्षा आपके लिए और आपके उपयोगकर्ताओं को इस असुविधा को न्यायसंगत साबित करने के लिए पर्याप्त है?

    +4

    क्या आप यह निर्धारित करने में सक्षम नहीं होंगे कि साइन अप पर ईमेल का उपयोग पहले से ही किया जा रहा है या नहीं? – corymathews

    +1

    हां, हालांकि मौजूदा उपयोगकर्ताओं को सूचित करने के लिए एक ही दृष्टिकोण का उपयोग किया जा सकता है। उपयोग की आसानी के प्रभाव के साथ एक ही चेतावनी लागू होती है। –

    1

    मुझे लगता है कि (gbrandt's) विकल्प 2 एक शानदार तरीका होगा यदि यह आपके पास पहले से मौजूद कुछ व्यक्तिगत जानकारी के साथ संयुक्त है। यानी जन्म की तारीख।

    जब उपयोगकर्ता अपना ईमेल पता दर्ज करके एक नया पासवर्ड (रीसेट) का अनुरोध करता है, तो पासवर्ड को रीसेट करने से पहले उसे जन्म की सही तिथि (या कुछ और) दर्ज करना होगा और उपयोगकर्ता को एक नया ईमेल भेजा जाएगा।

    केवल वे जो उसे अच्छी तरह से जानते हैं, संभवत: उन्हें अपना पासवर्ड रीसेट करके परेशान कर सकते हैं! यह एक अजनबी या बॉट

    5 या 7 खराब ईमेल पते पर & जन्म संयोजनों की तारीख उपयोगकर्ता को ईमेल किया गया है कि उनके पासवर्ड से रीसेट होने का अनुरोध किया गया है और गलत प्रमाण पत्र के कारण विफल रहा है। फिर उस खाते के लिए पासवर्ड रीसेट करना 24 घंटे या किसी भी वांछित अवधि के लिए निलंबित कर दिया गया है।

    (यदि बहुत अधिक उपयोगकर्ताओं को इस ईमेल वह पता चल जाएगा किसी दुर्भावनापूर्ण रूप से आपकी वेबसाइट की जानकारी प्राप्त करने के लिए कोशिश कर रहा है/ऐप्स के बारे में webadmin से संपर्क करें)

    क्या तुम लोग सोचते हैं?

    -1

    विचार जो मैं सोच रहा था वह उपयोगकर्ता को भेजे गए लिंक में डेटा पर हस्ताक्षर करना था।फिर, जब उपयोगकर्ता लिंक पर क्लिक करता है और सर्वर कॉल प्राप्त करता है, तो सर्वर को एन्क्रिप्टेड भाग भी मिलता है और यह सत्यापित कर सकता है कि डेटा छूटा हुआ था।

    मैंने इस उपयोग के मामले में एक जावा परियोजना लागू की है। यह गिटहब, ओपन सोर्स पर है। यह आपके प्रश्न का पूरी तरह जवाब देता है ... जावा में लागू किया गया।

    ईमेल में लिंक के लिए - यह लिंक उत्पन्न करता है, साथ ही इसे उपयोग पर मान्य करता है।

    सब कुछ के लिए विवरण रहे हैं (और अगर कुछ याद आ रही है - मुझे पता है ... चलो)

    एक नज़र: https://github.com/OhadR/Authentication-Flows

    एक Demo here देखें।

    यह क्लाइंट वेब-ऐप है जो सभी स्पष्टीकरण के साथ रीडमे के साथ ऑथ-फ्लो का उपयोग करता है। यह आपको कार्यान्वयन का निर्देश देता है: https://github.com/OhadR/oAuth2-sample/tree/master/authentication-flows

    +0

    मैंने स्रोत पर एक त्वरित नज़र डाली लेकिन मुझे उस कोड पर नहीं मिला जो वास्तव में काम करता है। तो मैंने कॉन्फ़िगरेशन में sha-256 के बारे में सोचा, क्या इसका मतलब यह है कि पासवर्ड एक हैश गणना के साथ धोए गए हैं या यह एक पुनरावृत्त पीबीकेडीएफ 2 का हिस्सा है? क्या नमक वास्तव में ऑपरेटिंग सिस्टम के यादृच्छिक स्रोत के बजाय उपयोगकर्ता नाम से लिया गया है? भूल गए पासवर्ड-कोड को कैसे संग्रहीत किया जाता है, क्या यह केवल हैश के रूप में संग्रहीत है? – martinstoeckli

    +0

    पासवर्ड कुंजीस्टोर + नमक (उपयोगकर्ता नाम) का उपयोग करके एन्क्रिप्टेड हैं। यदि उपयोगकर्ता अपना पासवर्ड भूल गया है, तो उसे यह नहीं मिलता है, लेकिन इसके बजाय उसे अपने इनबॉक्स में एक ईमेल मिलता है, इसलिए हम सुनिश्चित करते हैं कि वह एक (उसकी पहचान) है। ईमेल में एक एन्क्रिप्टेड लिंक है जो उसे "नया पासवर्ड सेट करें" पृष्ठ पर ले जाता है। आप डेमो में इसका प्रयास कर सकते हैं (डेमो का लिंक ऊपर है) – OhadR

    +0

    वर्कफ़्लो मेरे लिए अच्छा लग रहा है, मुझे क्या आश्चर्य हुआ कि हैश की गणना कैसे की जाती है, या आप इस कीस्टोर में पासवर्ड स्टोर करने के लिए हैश का उपयोग नहीं करते हैं? यह सुरक्षित होने के लिए बीसीआरपीटी या पीबीकेडीएफ 2 जैसे धीमे अनुकूलनीय हैश एल्गोरिदम होना चाहिए। फिर नमक आदर्श रूप से यादृच्छिक होना चाहिए, अन्य पैरामीटर से वंचित नहीं होना चाहिए। जब मैंने भूल गए पासवर्ड फॉर्म को सबमिट किया, तो फ्रेमवर्क ने एक टोकन के साथ एक ईमेल भेजा जो अच्छा है, यह टोकन डेटाबेस में संग्रहीत नहीं किया जाना चाहिए, केवल इसके हैश को संग्रहीत किया जाना चाहिए। – martinstoeckli