2009-12-31 13 views
41

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

मैं इस एप्लिकेशन को खोलने और खोलने के लिए तैयार हूं और उन चाबियों के साथ क्या करना है, इस समस्या को पूरा करने के लिए तैयार हूं।

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

वर्तमान में मेरे सभी चाबियाँ hardcoded कर रहे हैं, लेकिन मैं कैसे एक खुला स्रोत आवेदन में निजी कुंजियों की स्थिति को संभालने के लिए के रूप में एक गतिरोध पर हूँ पर:

कुंजी -अगर hardcoded रहते हैं, वे जैसे ही मेरा सोर्स कोड होता है, सार्वजनिक रूप से दिखाई देगा।

- मैं वास्तव में कोड वितरण से कुंजी के साथ स्रोत फ़ाइल को छोड़ नहीं सकता, तब से यह संकलित नहीं होगा। यह तकनीकी रूप से समस्या हल करता है, लेकिन एक नया, अस्वीकार्य एक प्रस्तुत करता है।

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

तो, मेरे कोडबेस (वर्तमान में संस्करण नियंत्रण के लिए Mercurial के तहत) के संबंध में, सबकुछ प्रबंधित करने का सबसे अच्छा तरीका क्या है ताकि कोड सार्वजनिक हो, लेकिन मेरी चाबियां निजी रहेंगी?

+0

आप किस प्रोग्रामिंग भाषा का उपयोग कर रहे हैं? –

+0

इस मामले मैं # ग – callingshotgun

उत्तर

15

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

8

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

जैसा कि कॉर्नेल कहता है, आप अपने स्रोत नियंत्रण में नकली एपीआई कुंजी के साथ एक उदाहरण कॉन्फ़िगरेशन फ़ाइल शामिल कर सकते हैं।

एक और विकल्प, आप वेब सर्विसेज चलाने वाले लोगों से बात कर सकते हैं और दो चीजों में से एक के लिए पूछ सकते हैं।

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

  2. वेबसाइसेस से बात करें यह देखने के लिए कि क्या वे आपको अपने आवेदन के लिए एक विशेष एपीआई कुंजी देंगे। ओपन सोर्स संस्करण के लिए उपयोगकर्ताओं को अपना खुद का प्रवेश करने की आवश्यकता होगी। लेकिन आपकी बाइनरी मानक एक का उपयोग कर सकती है।

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

यह कोई अलग नहीं है?

+0

एक कॉन्फ़िग फ़ाइल का उपयोग कर के साथ समस्या यह उपयोग कर रहा हूँ कि मैं वास्तव में कार्यक्रम का वितरण कर रहा हूँ में इसे कहीं और, संकलित है प्रयोग करने योग्य रूप है। अगर मुझे कॉन्फ़िगर-फ़ाइल रूट जाना है, तो मुझे एपीआई कुंजी से भरे कॉन्फ़िगरेशन फ़ाइल के साथ प्रोग्राम वितरित करना होगा। – callingshotgun

+6

ईमानदार होने के लिए, कुछ समझदार हैकर को आपके एपीआई कुंजी को संकलित रूप से भी बाहर निकालने से रोकता है। –

+0

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

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