जैसे ही आप एप्लिकेशन जारी करते हैं, यह रिवर्स इंजीनियर हो सकता है। इसका मतलब यह है कि आपके द्वारा सभी उपयोगकर्ताओं को एक ही एप्लिकेशन (समान बायनेरिज़, एक ही सेटिंग) वितरित किए जाने पर आप 100% संरक्षित होने के लिए कुछ भी नहीं कर सकते हैं।
यदि आप हर उपयोगकर्ता के लिए एप्लिकेशन को कस्टमाइज़ कर सकते हैं, तो आपके पास अपने एपीआई का उपयोग करने के लिए शायद किसी अन्य एप्लिकेशन को मना करने का मौका नहीं है, लेकिन कम से कम इस एप्लिकेशन को सीमित संख्या में यह एपीआई करने के लिए कर सकता है।
निम्न स्कीमा की कल्पना करें:
- क्लाइंट अपने विशिष्ट पहचानकर्ता (उपयोगकर्ता द्वारा एक पहचानकर्ता) को जोड़ता है और भेजता है।
- सर्वर एक सार्वजनिक कुंजी के साथ एन्क्रिप्टेड एक चुनौती भेजकर जवाब देता है। यह सार्वजनिक कुंजी पहले भेजे गए विशिष्ट पहचानकर्ता से संबद्ध है।
- क्लाइंट एक निजी कुंजी का उपयोग करके डेटा को डिक्रिप्ट करके चुनौती को हल करता है और डिक्रिप्टेड सीक्रेट को सादे सर्वर पर वापस भेजता है।
- सर्वर पुष्टि करता है कि प्रस्तुत रहस्य मूल रूप से उत्पन्न एक से मेल खाता है।
जो डेवलपर आपके एप्लिकेशन को हैक करेगा और सफलतापूर्वक निजी कुंजी प्राप्त करेगा, वह आपके एप्लिकेशन से आपके API का उपयोग करने में सक्षम होगा, लेकिन वह आपके सर्वर के लिए स्वयं के रूप में पहचानकर्ता होगा।
यदि एक ही उपयोगकर्ता प्रति दिन आपके एपीआई के लिए 10 000 अनुरोध कर सकता है और औसतन, एक सक्रिय उपयोगकर्ता प्रति दिन 2 000 अनुरोध करता है, तो इसका मतलब है कि यह डेवलपर अपने आवेदन का उपयोग स्वयं करने में सक्षम होगा और शायद अपने दोस्तों को दे, लेकिन वह हजारों लोगों को इसे बेचने, कहने, करने में सक्षम नहीं होगा, सिर्फ इसलिए कि यह केवल कुछ मिनटों के लिए सुबह काम करेगा।
जबकि यह मदद करता है, यह न तो 100% प्रमाण है और न ही। क्या होगा यदि हैकर आपके ऐप से डिवाइस पर अपना स्वयं का ऐप इंस्टॉल करने पर निजी कुंजी निकालने का कोई तरीका ढूंढता है?
साइड नोट जो आपके प्रश्न का उत्तर नहीं देता है, लेकिन फिर भी उपयोगी हो सकता है: अपने प्राथमिक उत्पाद (मोबाइल एप्लिकेशन) के लिए एक उपकरण के रूप में एपीआई के बारे में न सोचें । एक प्रथम श्रेणी के उत्पाद के रूप में इसके बारे में सोचें , एक ऐसा उत्पाद जो भुगतान किया जा सकता है। अमेज़ॅन और Google द्वारा वर्षों के लिए एक ही मॉडल का उपयोग किया जाता है, यह माइक्रोसॉफ्ट द्वारा एज़्योर, आदि के साथ सक्रिय रूप से उपयोग किया जाने लगता है।
जैसे ही आप एपीआई पर विचार करते हैं, जैसा कि आपके चमकदार नए मोबाइल ऐप्स के लिए दासता को कम करने वाला एक द्वितीयक उपकरण नहीं है, लेकिन वास्तविक उत्पाद, उसी स्तर पर, जैसा कि उपयोगकर्ता वास्तव में किसी भी एप्लिकेशन को देखता है, आप एपीआई के खिलाफ सुरक्षा के बारे में कम सोचने लगते हैं। अन्य एप्लिकेशन द्वारा उपयोग, और एपीआई के मुद्रीकरण के बारे में अधिक । ऐसी API का उपयोग आपके ऐप्स द्वारा किया जा सकता है, जो इसके ग्राहक हैं, या किसी भी अन्य ऐप, किसी के द्वारा स्वतंत्र रूप से विकसित किए गए हैं। इसके कई लाभ हैं:
एक एपीआई बनाना ताकि इसका उपयोग केवल आपके अनुप्रयोगों द्वारा किया जा सके कठिन और महंगा है। इस समय और धन का उपयोग कुछ अधिक उपयोगी के लिए किया जा सकता है।
जनता के लिए अपना एपीआई खोलना आपके और दुनिया दोनों के लिए बहुत लाभकारी हो सकता है। कल्पना कीजिए कि आप एक महान वास्तुकार और एक महान डेवलपर हैं, इसलिए आपने आश्चर्यजनक रूप से शानदार API बनाया है, लेकिन आपका विज़ुअल डिज़ाइनर कौशल चूसना और आप वास्तव में इंटरैक्शन डिज़ाइन आदि के बारे में कुछ भी नहीं समझते हैं। यदि आप अपना एपीआई छिपाते हैं, तो लोगों को पता चल जाएगा कि आपने एक मोबाइल एप्लिकेशन बनाया है जो अनुपयोगी और बदसूरत है। यदि आपका एपीआई सार्वजनिक है, तो अन्य डेवलपर्स इसकी गुणवत्ता से आकर्षित होंगे और इसके लिए शानदार एप्लिकेशन लिखेंगे, जिससे आपको बहुत सारा पैसा मिलेगा।
आप कभी कल्पना नहीं करते हैं कि अन्य लोग आपके एपीआई का उपयोग कैसे कर सकते हैं। Kinect के साथ यही हुआ है। मूल रूप से, Microsoft ने गेम्स के लिए Kinect बनाया। जब Microsoft ने जनता के लिए एपीआई खोला, तो उन्होंने कभी नहीं सोचा था कि इसका उपयोग कुछ वर्षों बाद वैज्ञानिक अनुप्रयोगों, स्वास्थ्य क्षेत्र, आदि द्वारा किया जाएगा। यह वेब एपीआई के लिए समान है: अधिक डेवलपर्स इसका उपयोग कर रहे हैं, विचारों का अधिक व्यापक रूप से उपयोग किया जाएगा।