मैं थोड़ी देर के लिए जावा प्रोजेक्ट पर काम कर रहा हूं, और इसे सार्वजनिक डाउनलोड के लिए उपलब्ध कराने से पहले, मैं एक फीचर में जोड़ना चाहता हूं जिसके लिए मुझे एक MySQL डेटाबेस से कनेक्ट करने की आवश्यकता है। मेरा सवाल सरल है: यदि कोड ओपन-सोर्स है तो मैं डेटाबेस को पासवर्ड छुपाने के बारे में कैसे जाउंगा?ओपन-सोर्स कोड में स्ट्रिंग छुपाएं?
उत्तर
डेटाबेस कोड सेटिंग्स को अपने कोड से अलग करें।
मैं इसे एक प्रारूप में कैसे स्टोर करूंगा जो यद्यपि अपठनीय होगा? – caseif
कोड से अपने आवेदन की कॉन्फ़िगरेशन को अलग करें। जब उपयोगकर्ता फ़ाइल को तैनात करता है, तो उन्हें कॉन्फ़िगरेशन की आपूर्ति करें। आपको इस तरह से किसी भी obfuscation shenanigans खींचने की जरूरत नहीं है। –
जैसा कि उपयोगकर्ता ने एक अलग फ़ाइल आयात की है? यदि यह संभव है, तो मैं पूरी चीज को एक फ़ाइल में रखना पसंद करूंगा। – caseif
आप किसी भी प्रकार के configuration file
में ini
फ़ाइल जैसे पासवर्ड डाल सकते हैं। सेटअप/स्थापना चरण के दौरान, उपयोगकर्ता से पासवर्ड प्राप्त करें और कॉन्फ़िगरेशन फ़ाइल में कोड द्वारा या तो इसे पॉप्युलेट करें, या उन्हें मैन्युअल रूप से करने की अनुमति दें।
मैं काफी पालन नहीं करता ... मुझे लगता है कि मुझे यह उल्लेख करना चाहिए था कि मेरा कोड एक स्टैंडअलोन जार है। – caseif
जहाँ तक मुझे पता है, कोई सही जवाब नहीं है। आप इसे खराब करने या छिपाने के लिए वास्तव में कड़ी मेहनत कर सकते हैं, लेकिन अगर पासवर्ड या इसकी गणना करने की विधि आपके जेएआर में है, तो एक सतत और कुशल उपयोगकर्ता इसे पायेगा।
वहाँ एक बेहतर जवाब से मैं यहाँ दे सकता है: How can I protect MySQL username and password from decompiling?
मैं थोड़ा उलझन में हूँ। अगर मैं कोड 'प्राथमिकताएं .पुट ("db_username", उपयोगकर्ता नाम) का उपयोग करना था; preferences.bb_password ", पासवर्ड);', क्या अभी भी बाइनरी में क्रेडेंशियल्स को कड़ी-कोडित नहीं किया जाएगा? – caseif
आप अपने कोड के उपयोगकर्ताओं को अपने डेटाबेस सर्वर से सीधे कनेक्ट करना चाहते हैं, न कि MySQL के उदाहरण वे खुद सेटअप? क्या आप इस बारे में कोई विवरण दे सकते हैं कि यह किस तरह की सुविधा है? क्या एक संभावित वैकल्पिक समाधान एक आरामदायक वेब सेवा को बढ़ावा देने के लिए हो सकता है जो उपभोक्ता किसी भी व्यक्ति को आपके डेटाबेस सर्वर को सार्वजनिक किए बिना कनेक्ट कर सकते हैं और नियंत्रित कर सकते हैं? – Charlie