2009-12-13 12 views
5

यदि मैंने कोई ऐसा एप्लिकेशन बनाया है जो जीमेल, ट्विटर और फेसबुक से कुछ डेटा एक्सेस करता है, और मैं चाहता हूं कि उपयोगकर्ता केवल अपनी प्रमाणीकरण जानकारी दर्ज कर सके, और यह कुछ दिनों या हफ्तों के बाद रीसेट करें, रूबी में गतिशील रूप से ऐसा करने का सबसे अच्छा तरीका क्या है?बाहरी एपीआई के लिए पासवर्ड संग्रहीत करना - सर्वश्रेष्ठ अभ्यास

मैं देख रहा हूँ बस इतनी तरह अपने ग्राहकों के/उपयोगकर्ताओं की साख की एक कॉन्फ़िग फ़ाइल के लोगों का एक बहुत कुछ:


gmail_account: username: myClient password: myClientsPassword 

यह एक) की तरह यह बहुत असुरक्षित है, और ख) यह wouldn लगता है ' अगर मैं हजारों उपयोगकर्ताओं के लिए इस तरह की जानकारी स्टोर करना चाहता हूं तो काम नहीं करता। ऐसा करने का अनुशंसित तरीका क्या है?

मैं इन सेवाओं के शीर्ष पर एक इंटरफ़ेस बनाने में सक्षम होना चाहता हूं, इसलिए उपयोगकर्ता द्वारा लेनदेन करने पर हर बार प्रमाण-पत्र दर्ज करना संभव नहीं है।

उत्तर

6

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

लेकिन यह पहली जगह क्यों है? फेसबुक कनेक्ट और ट्विटर & ओएथ का उपयोग करने वाले Google को उपयोगकर्ता पासवर्ड को स्टोर करने की आवश्यकता नहीं है। किसी बिंदु पर उपयोगकर्ता की कुकीज़ समाप्त हो जाएगी (या वे किसी अन्य कंप्यूटर से आपकी साइट तक पहुंचने का प्रयास करेंगे) और उन्हें पुनः प्रमाणीकरण करना होगा। आप पुनः प्रमाणीकरण को रोक नहीं सकते - इसके बजाय, आपको इसे अंतिम उपयोगकर्ता को जितना संभव हो सके संभालना आसान बनाना चाहिए।

1

यह तरीका है कि यह fetcmailrc के लिए उदाहरण के लिए काम करता है जिसे 600 तक chmod होना चाहिए (केवल अपने मालिक द्वारा readeable और लिखने योग्य)। और हाँ, इसमें सादा पासवर्ड है।

6

ऐसी सेवाएं OpenAuth प्रमाणीकरण प्रदान कर रही हैं। आपको इसकी तलाश करने की दृढ़ता से अनुशंसा की जाती है।

2

सुरक्षा

मुझे लगता है आपके आवेदन प्लेन में पासवर्ड पता करने की जरूरत है। फिर किसी तरह के सादे तरीके से इसे स्टोर करने के आसपास कोई रास्ता नहीं है।

  • किसी प्रकार के एन्कोडेड तरीके से स्टोर करें। बेस 64, यह आपको आपकी आंखों के साथ डेटाबेस को देखते समय पासवर्ड जानने से बचाता है, लेकिन यह आपको किसी और चीज़ से सुरक्षित नहीं करता है।
  • सुनिश्चित करें कि फ़ाइलों को किसी अन्य उपयोगकर्ता से पढ़ने योग्य नहीं है
  • अपने हार्डड्राइव को एन्क्रिप्ट करें, इसलिए कोई भी आपके हार्डड्राइव को चोरी करने से पासवर्ड प्राप्त नहीं कर सकता है। बूट करने के दौरान आपके कंप्यूटर को आपको पासवर्ड इनपुट करने की आवश्यकता होगी।

भंडारण अपने फाइल सिस्टम में ज्यादा डेटा भंडारण के साथ गलत कुछ भी नहीं है। बेहतर प्रदर्शन के लिए तुम इतनी फाइल सिस्टम और नहीं माणिक डेटा

  • के लिए खोज करने के लिए subdirectorys का एक बहुत बनाने की जरूरत है, प्रत्येक उपयोगकर्ता के लिए निम्नलिखित

    • एक फ़ाइल कर सकते हैं। कुछ फिलीसिस्टम प्रदर्शन का सामना करना पड़ता है यदि आप एक निर्देशिका में कई फाइलें डालते हैं। जैसे।में

    आप फाइल सिस्टम

  • 0

    मैं दृढ़ता से आप OAuth उपयोग करने के लिए सुझाव है कि के बजाय एक डेटाबेस इस्तेमाल कर सकते हैं 'एक/बी/सी/डी' फ़ाइल 'एबीसीडी' रखा है, लेकिन स्टोर करने के लिए अगर आपके पास पासवर्ड (कृपया बिल्कुल सुनिश्चित करें कि आपको इसे करने की आवश्यकता है) आप पासवर्ड को एन्क्रिप्ट करने के लिए OpenSSL लाइब्रेरी का उपयोग कर सकते हैं। ओपनएसएसएल लाइब्रेरी रूबी में काफी खराब दस्तावेज है, लेकिन जहां तक ​​मुझे पता है कि वे सी ओपनएसएसएल लाइब्रेरी के समान हैं। चूंकि मुझे लगता है कि आपको OAuth का उपयोग करना चाहिए, और पासवर्ड संग्रहीत नहीं करना है, इसलिए मैं आपको दस्तावेज़ को स्वयं ढूंढने दूंगा।

    हालांकि, ओएथ दृष्टिकोण के लिए, आप OAuth gem पर एक नज़र डालना चाहते हैं। Google, Twitter (जो मैं आपको उत्कृष्ट ट्विटर मणि का उपयोग करने की सलाह देता हूं) और फेसबुक (जिसमें दो प्रतीत होता है अच्छे विकल्प: RFacebook और facebooker)

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