perl

2010-05-28 12 views
5

पर लिखी गई गुई एप्लिकेशन पर प्रमाणीकरण यह विशिष्ट विशिष्ट प्रश्न मैं डीबी से कनेक्ट एक perl gui/wxperl एप्लिकेशन बना रहा हूं। मैं चाहता हूं कि मेरा एप्लिकेशन पासवर्ड सुरक्षित हो। I.e पहले उपयोगकर्ता को उपयोगकर्ता और पासवर्ड दर्ज करना चाहिए और फिर एप्लिकेशन का उपयोग करना चाहिए।perl

पासवर्ड स्टोर करने का सबसे अच्छा तरीका क्या है, कोई व्यक्ति यह विचार कर सकता है कि मैं उपयोगकर्ता और पासवर्ड को कैसे स्टोर करना चाहिए और मुझे प्रमाणीकरण के लिए उन्हें कैसे पुनर्प्राप्त करना चाहिए? यदि संभव हो तो कोई व्यक्ति कुछ पेर्ल कोड प्रदान कर सकता है यह कैसे करें?

उत्तर

9

आप निश्चित रूप से पासवर्ड को सादा पाठ में सहेजना नहीं चाहते हैं, तो शायद आपको sha256 का उपयोग करने पर एक नज़र डालना चाहिए। आप पर्ल मोड डाइजेस्ट :: एसएचए (दस्तावेज़ों के लिए सीपीएएन देखें) का उपयोग कर सकते हैं।

use Digest::SHA qw(sha256); 
my $digest = sha256($input_password); 
my $saved_digest_password = get_saved_password_for_user($input_user); 
if ($digest eq $saved_digest_password){ 
    # they have the correct password 
} 

यह सिर्फ छद्म कोड है, लेकिन इसे शुरू करने में आपकी सहायता करनी चाहिए। "Get_saved_password_for_user" को परिभाषित करने के लिए यह आप पर निर्भर है, हालांकि आप चाहते हैं कि डेटाबेस में कहीं या फ़ाइल सिस्टम या कहीं और डेटाबेस में संग्रहीत किया जाए। बस सुनिश्चित करें कि आप कहीं भी $ input_password को स्टोर या लॉग नहीं करते हैं। स्टोर करने की आवश्यकता होने वाली एकमात्र चीज $ डाइजेस्ट पासवर्ड है।

आशा है कि मदद करता है!

+1

+1 psuedocode के रूप में भी यह पासवर्ड मिलान की मूल बातें के लिए नीचे आता है। – Axeman

+1

अच्छी पोस्ट, लेकिन कृपया अपने subroutine कॉल पर '&' sigil का उपयोग न करें। यहां जरूरी नहीं है, और इसका एक बहुत ही विशिष्ट अर्थ है। क्या 'get_saved_password_for_user() 'का प्रोटोटाइप है जिसे यहां ओवरराइड करने की आवश्यकता है? अधिक जानकारी के लिए http://www.perlfoundation.org/perl5/index.cgi?subroutines_called_with_the_ampersand देखें। – daotoad

+0

यह एक बहुत अच्छा जवाब है, लेकिन जैसा कि आप जानते हैं कि perl opensource है, यदि कोई व्यक्ति ($ digest eq $ saved_digest_password) को पर बदलता है ($ $ $ digest_digest_password) तो वह हर गलत पासवर्ड के लिए प्रवेश करेगा, किसी को भी कोई विचार हो सकता है सुरुचिपूर्ण ढंग से इसे कैसे हल करें? – oren