2011-11-19 14 views
22

मैं एक ऐसा एप्लीकेशन विकसित कर रहा हूं जो डीबी से कुछ डेटा पढ़े। डीबी से कनेक्शन मानक लॉगिन/पासवर्ड तंत्र के माध्यम से किया जाता है।जावा - एप्लिकेशन में इस्तेमाल पासवर्ड कैसे स्टोर करें?

समस्या यह है कि: डीबी पासवर्ड कैसे स्टोर करें? यदि मैं इसे कक्षा के सदस्य के रूप में संग्रहीत करता हूं, तो इसे आसानी से एक अपघटन ऑपरेशन के माध्यम से पुनर्प्राप्त किया जा सकता है।

मुझे लगता है कि obfuscation समस्या का समाधान नहीं करता है, क्योंकि एक स्ट्रिंग पासवर्ड obfuscated कोड में आसानी से भी पाया जा सकता है।

किसी के पास सुझाव हैं?

+2

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

+1

मैं आमतौर पर इसे रोट 13 के साथ एन्क्रिप्टेड स्ट्रिंग के रूप में अपने एप्लिकेशन में हार्ड-कोडित करता हूं। (मजाक कर रहा है)। –

+0

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

उत्तर

20

अपने कोड में कभी भी हार्ड-कोड पासवर्ड नहीं। यह हाल ही में Top 25 Most Dangerous Programming Mistakes

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

आपको पासवर्ड सहित कॉन्फ़िगरेशन जानकारी को एक अलग फ़ाइल में संग्रहीत करना चाहिए जिसे एप्लिकेशन प्रारंभ होने पर पढ़ता है। डिकंपिलेशन के परिणामस्वरूप पासवर्ड को लीक करने से रोकने का यही एकमात्र असली तरीका है (इसे बाइनरी में शुरू करने के लिए कभी भी संकलित न करें)।

अधिक विस्तृत विवरण के लिए इस अद्भुत जवाब देखें: By William Brendel

0

जहाँ आप अन्य सुरक्षा उपायों का एक बहुत शामिल करने के लिए नहीं करना चाहती एक छोटे और सरल अनुप्रयोग के लिए, यह शायद एक विन्यास विकल्प होना चाहिए। जब आप अपना आवेदन तैनात करते हैं, तो यह एक कॉन्फ़िगरेशन फ़ाइल पढ़ सकता है जहां डेटाबेस कनेक्शन गुण निर्दिष्ट होते हैं। इसका मतलब है कि एप्लिकेशन प्रति पासवर्ड को नहीं जानता है, लेकिन आपको पासवर्ड खोजने के लिए सर्वर तक पहुंच प्राप्त करने की आवश्यकता है।

0

कुछ डेटा कॉन्फ़िगर करने योग्य होना चाहिए। जैसा कि आपने बताया है, यह username और password या कुछ सामान्य datas हो सकता है; आम तौर पर हम एक संपत्ति-विन्यास पृष्ठ बना रहे हैं। मैं जो करता था वह XML फ़ाइल का उपयोग करता है, encrypted प्रारूप में अपना password/username रखें। कनेक्टिविटी के लिए अपना पासवर्ड पुनर्प्राप्त करने के लिए आप XML को आसानी से पार्स कर सकते हैं।

यह सुनिश्चित करता है कि आपके पासवर्ड किसी भी समय बदला जा सकता है। यह केवल पासवर्ड को संदर्भित नहीं करता है। लेकिन आपके द्वारा उपयोग किए जाने वाले किसी भी डेटा को समय-समय पर कॉन्फ़िगर किया जाना है।

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