संक्षेप में:
- आपके पास एक विक्रेता द्वारा जारी की गई एक एपीआई कुंजी है ताकि आप उनके एपीआई का उपयोग कर सकें, और आप का दायित्व है कि आप इस कुंजी को किसी और के लिए जाने से रोकें।
- आप अपने एप्लिकेशन कोड में उस विक्रेता के एपीआई (जिसे एपीआई कुंजी की आवश्यकता होती है) को कॉल कर रहे हैं
- आप उन एप्लिकेशन पर सिस्टम को लागू कर रहे हैं, जहां ग्राहकों के पास बायनेरिज़ तक पहुंच है और इस प्रकार कोड को विघटित या बाधित कर सकता है या ट्रैफ़िक रोक सकता है
इस कुंजी के समझौते को रोकने का सबसे अच्छा तरीका है इसका नियंत्रण रखना। इसका मतलब यह है कि इसे कभी भी ऐसे सर्वर पर तैनात नहीं किया जाना चाहिए जहां आपके अलावा कोई भी व्यक्ति बाइनरी को पढ़ सके, और कभी भी आपके द्वारा नियंत्रित नहीं किए जाने वाले संचार लिंक पर न जाए।
अंततः, यदि बायनेरिज़ आपके नियंत्रण से बाहर हैं, तो उनमें सब कुछ आपके नियंत्रण से बाहर है। इसी तरह, यदि कोई ट्रैफ़िक रोक सकता है, तो वे API कुंजी ( संभावित रूप से तब भी जब आप SSL का उपयोग कर रहे हों ) पर कब्जा कर सकते हैं ।
मैं इसे पूरा करने के लिए दो प्राथमिक तरीके देख सकता हूं, दोनों ही आपके तैनात एप्लिकेशन में आपकी निजी एपीआई कुंजी को शामिल नहीं करते हैं:
प्रत्येक परिनियोजन के लिए एक अद्वितीय API कुंजी प्राप्त करें
इसके लिए विक्रेता के साथ कुछ अतिरिक्त संबंध की आवश्यकता होती है, जहां आप चाबियां प्राप्त कर सकते हैं या अपने ग्राहकों को चाबियां प्राप्त कर सकते हैं।
यह वास्तव में काफी सामान्य है, उदाहरण के लिए, ऐसे उत्पाद जो Google मैप्स एपीआई का उपयोग करते हैं। सॉफ़्टवेयर के निर्माता की अपनी कुंजी होती है जिसका उपयोग वे अपनी कॉपी को विकसित / चलाने के दौरान करते हैं, लेकिन वे इसे सॉफ़्टवेयर में शामिल नहीं करते हैं, और इसके बजाय, आपको उपयोगकर्ता को सॉफ़्टवेयर स्थापित करने, Google पर जाने और अपना स्वयं का API प्राप्त करने की आवश्यकता होती है। चाभी। सॉफ़्टवेयर में Google मानचित्र API कुंजी का उपयोग करने के लिए केवल कॉन्फ़िगरेशन विकल्प होता है।
वास्तव में, एपीआई की कुंजी जारी करने वाले कई विक्रेताओं को आपको इस तरह से काम करने की आवश्यकता होती है, इसलिए आप वैसे भी गलत रास्ते पर जा सकते हैं, और यह एकमात्र समाधान हो सकता है जिसे आप विक्रेता की सेवा की शर्तों के अनुसार उपयोग कर सकते हैं। / या आपके साथ कोई कानूनी अनुबंध हो सकता है।
एक प्रॉक्सी का उपयोग करें
एक प्रॉक्सी एपीआई सेट करें, जहां आपका एप्लिकेशन आपके एपीआई (आपके सर्वर पर) को कॉल करता है, और बदले में, आपका एपीआई कुंजी का उपयोग करके विक्रेता के एपीआई को कॉल करता है।
आपको अपने API पर अतिरिक्त सुरक्षा की आवश्यकता हो सकती है, उदाहरण के लिए, केवल यह सुनिश्चित करने के लिए कि आपका एप्लिकेशन इसका उपयोग कर रहा है। इसके द्वारा किया जा सकता है:
- कार्यक्षमता को इतना विशिष्ट बनाने के अलावा कुछ भी नहीं, लेकिन आपका ऐप इसका उपयोग कर सकता है
- आईपी श्वेत सूची
- कुछ मौजूदा लाइसेंसिंग / प्राधिकरण तंत्र आपके पास पहले से ही अपने सर्वर के लिए हैं
- आपकी अपनी API कुंजी प्रणाली जहां आप अपने ग्राहकों को कुंजी जारी कर सकते हैं
यहां ध्यान रखने वाली बात यह है कि आपको ऐसा करने की अनुमति नहीं दी जा सकती है। आपके विक्रेता के पास सेवा की शर्तें या कानूनी अनुबंध हो सकते हैं जो आपको "एकत्रीकरण सेवा" या प्रॉक्सी बनाने से रोकते हैं, इसलिए आपको इसके साथ जांच करने की आवश्यकता है।
दुर्व्यवहार से निपटने
यहां तक कि अगर आपकी कुंजी से समझौता नहीं किया जाता है, अगर आपका कोई ग्राहक कुछ ऐसा कर रहा है, जो विक्रेता को आपकी कुंजी को अवरुद्ध करने का कारण बनता है, तो अचानक आपके सभी ग्राहक अक्षम हो जाते हैं, और आपका एकमात्र फिक्स बाकी सभी को अपडेट करना है।
इसी तरह, यदि आप अपने किसी ग्राहक को ब्लॉक करना चाहते हैं (जैसे, उन्होंने भुगतान करना बंद कर दिया है, सॉफ्टवेयर को पायरेटेड कर दिया है, आदि) तो आप इसे हर किसी को अपडेट जारी किए बिना नहीं कर सकते हैं, और फिर कुंजी को अक्षम कर सकते हैं।
मुट्ठी भर ग्राहकों से परे किसी भी चीज के लिए इसका रसद जल्दी से अस्थिर हो जाएगा।
चाहे आप एक प्रॉक्सी के रूप में कार्य करते हैं या प्रत्येक स्थापना के लिए एक अद्वितीय कुंजी है, आप इनमें से किसी भी स्थिति को अपेक्षाकृत आसानी से संभाल सकते हैं (और किसी और के लिए बहुत कम प्रभाव के साथ)।
कुंजी को सुरक्षित रखने की कोशिश करना, जबकि यह आपके सॉफ्टवेयर में अंतःस्थापित है, अंततः एक निरर्थक प्रयास है। कोई फर्क नहीं पड़ता कि आप क्या करते हैं, कोई भी हमलावर जिसकी बायनेरिज़, सोर्स और / या संचार चैनल तक पहुंच है और यह निर्धारित करने के लिए पर्याप्त है कि वे ऐसा करने में सक्षम होंगे।
तो इसे एम्बेड न करें। "जीतने का एकमात्र कदम नहीं खेलना है।"