अपने उपयोगकर्ताओं की गोपनीयता को सुरक्षित रखें: डेवलपर्स के लिए एंड्रॉइड ऐप सुरक्षा

लेखक: Peter Berry
निर्माण की तारीख: 20 अगस्त 2021
डेट अपडेट करें: 20 जून 2024
Anonim
अपने ऐप को काम के लिए सुरक्षित करना - एंटरप्राइज़ देव प्रशिक्षण
वीडियो: अपने ऐप को काम के लिए सुरक्षित करना - एंटरप्राइज़ देव प्रशिक्षण

विषय


यदि आप अपने दर्शकों पर लटकने वाले हैं तथा एक भरोसेमंद एंड्रॉइड डेवलपर के रूप में आपकी प्रतिष्ठा, फिर आपको डेवलपर के रूप में एंड्रॉइड ऐप सुरक्षा को गंभीरता से लेने की आवश्यकता है।

यदि आपका ऐप कभी भी निजी डेटा लीक करता है, तो आपको अपने दर्शकों के एक बड़े हिस्से को खोने का खतरा है। आज के तकनीक-प्रेमी मोबाइल उपयोगकर्ता समझते हैं कि असुरक्षित ऐप के खिलाफ खुद को बचाने का सबसे अच्छा तरीका है कि इसे अपने डिवाइस से हटा दिया जाए। मीडिया द्वारा गंभीर डेटा उल्लंघनों को भी तेजी से रिपोर्ट किया जा रहा है, इसलिए मोबाइल सुरक्षा के लिए एक खराब दृष्टिकोण अपनाने के परिणामस्वरूप कुछ बहुत खराब प्रचार हो सकता है।

दांव उच्च हैं, और हर समय नए दुर्भावनापूर्ण एप्लिकेशन जारी किए जाने के साथ, इस बात की संभावना बढ़ जाती है कि आपका ऐप मैलवेयर और दुर्भावनापूर्ण तृतीय-पक्ष कोड के साथ डिवाइस साझा कर रहा हो।

मोबाइल सुरक्षा के लिए एक मैला दृष्टिकोण लेने से कुछ बहुत बुरा प्रचार हो सकता है।

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


अपनी निर्भरता को बनाए रखें

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

अपने ऐप को तैनात करने से पहले, एक अंतिम जांच करना भी एक अच्छा विचार है, बस यह सुनिश्चित करने के लिए कि कोई अपडेट उपलब्ध नहीं है।

यदि आपका ऐप Google Play Services का उपयोग करता है, तो आप जांच सकते हैं कि उपयोगकर्ता के डिवाइस में नवीनतम संस्करण इंस्टॉल है या नहीं, और यदि आवश्यक हो तो अपडेट को ट्रिगर करें।

यह जांचने के लिए कि क्या डिवाइस की Google Play सेवाएँ अद्यतित हैं, प्रदाताइन्स्टॉलर वर्ग की 'installIfNeeded () पद्धति पर कॉल करें। यदि कोई अपडेट उपलब्ध है, तो यह विधि एक प्राधिकरण अपवाद को फेंक देगी, और उपयोगकर्ता को अपने डिवाइस पर Google Play Services को अपडेट करने के लिए प्रेरित किया जाएगा।


अपने अनुमति अनुरोधों को सीमित करें

यदि आपके ऐप की अनुमति नहीं है, तो इसके किसी भी संवेदनशील डेटा या कार्यक्षमता को उस अनुमति के साथ संबद्ध करने का शून्य मौका है। संवेदनशील अनुमतियों तक पहुंच को प्रतिबंधित करना भी आपके ऐप को हैकर्स के लिए एक कम आकर्षक लक्ष्य बना सकता है, इसलिए जितना संभव हो उतना कम अनुमतियों का अनुरोध करना महत्वपूर्ण है।

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

वैकल्पिक रूप से, आप किसी एप्लिकेशन को किसी कार्य को पास करने के लिए इंटेंट्स का उपयोग करने में सक्षम हो सकते हैं जिसमें पहले से ही आवश्यक अनुमति है। उदाहरण के लिए, READ_CONTACTS और WRITE_CONTACTS अनुमतियों का अनुरोध करने के बजाय, आप किसी कार्य को संपर्क एप्लिकेशन को सौंप सकते हैं:

आशय contactIntent = नया आशय (Intent.ACTION_INSERT); contactIntent.setType (ContactsContract.Contacts.CONTENT_TYPE); if (contactIntent.resolveActivity (getPackageManager ())! = null) {startActivity (contactIntent); }

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

अपने उपयोगकर्ताओं को निर्णय लेने दें: एप्लिकेशन चयनकर्ता को प्रदर्शित करना

क्यों समय और ऊर्जा बर्बाद कर पहिया सुदृढ़ीकरण? अंतर्निहित इरादे आपको तृतीय-पक्ष अनुप्रयोगों के साथ सहयोग में कार्य करने की अनुमति देते हैं, जिससे आपको अपने सभी एप्लिकेशन की वांछित कार्यक्षमता प्रदान करने के लिए कोड की मात्रा कम करनी पड़ती है। किसी अन्य एप्लिकेशन में किसी कार्य को पास करने से, आप अपने ऐप द्वारा आवश्यक अनुमतियों की संख्या को कम करने में सक्षम हो सकते हैं।

निहित इरादे आपको एक टन समय बचा सकते हैं, लेकिन वे आपको भी देते हैं शून्य नियंत्रण जो आपके अनुरोध पर प्रतिक्रिया करता है। यदि कोई असुरक्षित या दुर्भावनापूर्ण तृतीय पक्ष ऐप आपके निहित इरादे का जवाब देता है, तो एक मौका है कि आप अनजाने में किसी तीसरे पक्ष को उपयोगकर्ता के व्यक्तिगत डेटा को उजागर कर सकते हैं।यदि किसी तृतीय पक्ष एप्लिकेशन के परिणामस्वरूप उपयोगकर्ता की गोपनीयता भंग होती है, तो आपके ऐप को एसोसिएशन द्वारा दोषी माना जा सकता है।

निहित इरादे जारी करते समय, आपको जहां भी संभव हो, Android का ऐप चयनकर्ता प्रदर्शित करना चाहिए।

उपयोगकर्ता को उन सभी अनुप्रयोगों की सूची के साथ प्रस्तुत करने से जो इस इरादे का जवाब दे सकते हैं, आप उन्हें एक ऐसे एप्लिकेशन का चयन करने का अवसर दे रहे हैं जिस पर वे व्यक्तिगत रूप से भरोसा करते हैं। हालांकि इस बात की कोई गारंटी नहीं है कि हर एक उपयोगकर्ता बुद्धिमानी से चुनेगा, इससे आप एक अविश्वसनीय ऐप के साथ डेटा साझा करने की संभावना कम कर सकते हैं।

आशय जारी करते समय, आपको यह देखना चाहिए कि क्या उपयोगकर्ता के पास कई अनुप्रयोग हैं जो इस आशय को संभाल सकते हैं। यह मानते हुए कि कई संगत ऐप्स उपलब्ध हैं, आप फिर appCosos createChooser () और इसे शुरू करने के लिए इसे पारित करके प्रदर्शित कर सकते हैं।

आशय myIntent = new Intent (Intent.ACTION_SEND); सूची possibleActivitiesList = queryIntentActivities (आशय, PackageManager.MATCH_ALL); // जांचें कि क्या एक से अधिक ऐप इस इरादे को संभाल सकते हैं // अगर (संभवत: संभवताएं। size ()> 1) {// एप्लिकेशन को चुनें चयनकर्ता // स्ट्रिंग शीर्षक = getResources ()। GetString (R.string.app_chooser_title); इरादा चयनकर्ता = Intent.createChooser (इरादा, शीर्षक); startActivity (चयनकर्ता); } और यदि (आशय। इरादे सक्रियता (getPackageManager ())! = null) {startActivity (आशय); }

ध्यान दें कि आपको सेवा शुरू करने के लिए कभी भी किसी अंतर्निहित इरादे का उपयोग नहीं करना चाहिए, क्योंकि आपके पास इस बात पर कोई नियंत्रण नहीं है कि कौन सी सेवा आपके अंतर्निहित इरादे का जवाब देती है।

बाहरी भंडारण से बचें

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

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

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

निम्नलिखित स्निपेट में, हम आंतरिक संग्रहण में डेटा लिख ​​रहे हैं:

अंतिम स्ट्रिंग FILE_NAME = "user_data.txt"; स्ट्रिंग फ़ाइलकंटेंट = "इस पाठ फ़ाइल में संवेदनशील उपयोगकर्ता डेटा शामिल है"; प्रयास करें (बफ़र किए गए लेखक = नया बफ़रवर लेखक (नया फ़ाइलविटर (नई फ़ाइल (getFilesDir), FILE_NAME))))) {author.write (fileContents); } पकड़ (IOException e) {// करने के लिए: हैंडल अपवाद //}

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

एंड्रॉइड की नई स्कॉप्ड डायरेक्ट्री एक्सेस का उपयोग करें

कभी-कभी, किसी एप्लिकेशन को डिवाइस के बाहरी संग्रहण के भीतर विशिष्ट निर्देशिकाओं तक पहुंच की आवश्यकता हो सकती है, उदाहरण के लिए डिवाइस के बाहरी चित्र निर्देशिका तक पहुंच प्राप्त करना।

जब आप READ_EXTERNAL_STORAGE अनुमति का अनुरोध कर सकते हैं, तो यह अक्सर आपके ऐप को आवश्यकता से अधिक डेटा तक पहुंच प्रदान करेगा। किसी ऐप के लिए डेटा का गलत तरीके से उपयोग करना असंभव है, जिसके लिए उसकी पहुँच नहीं है, इसलिए आपको अपने आवेदन की जितनी भी जानकारी हो सके कम से कम करने की कोशिश करनी चाहिए।

READ_EXTERNAL_STORAGE अनुमति का अनुरोध करने के बजाय, आप किसी विशिष्ट निर्देशिका तक पहुँच का अनुरोध कर सकते हैं। यह scoped निर्देशिका पहुंच आपको StorageManager वर्ग का उपयोग करने की आवश्यकता है और फिर उस उदाहरण के StorageVolume.createAccessIntent () विधि को कॉल करके एक इरादा बनाएं। उदाहरण के लिए, निम्नलिखित स्निपेट में हम बाहरी चित्र निर्देशिका तक पहुँच प्राप्त कर रहे हैं:

StorageManager newStorageManager = (StorageManager) getSystemService (Context.STORAGE_SERVICE); StorageVolume वॉल्यूम = newStorageManager.getPrimaryStorageVolume (); आशय अभिप्राय = volume.createAccessIntent (Environment.DIRECTORY_PICTURES); startActivityForResult (आशय, अनुरोध_कोड);

यदि उपयोगकर्ता आपके एप्लिकेशन को इस बाहरी निर्देशिका तक पहुंच प्रदान करता है, तो Android आपके onActivityResult () को परिणाम के कोड के साथ ओवरराइड करेगा, और अनुरोधित निर्देशिका के लिए URI युक्त एक आशय।

संवेदनशील उपयोगकर्ता डेटा को कभी कैश न करें

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

1 एमबी से बड़े कैश के लिए, आप getExternalCacheDir () का उपयोग कर सकते हैं, जो एप्लिकेशन-विशिष्ट निर्देशिका में पथ को वापस कर देगा जहां आप अपनी कैश्ड सामग्री को संग्रहीत कर सकते हैं।

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

अनधिकृत उपयोग के खिलाफ अपनी चाबियाँ सुरक्षित रखें

Android Keystore सिस्टम आपको एक कंटेनर के भीतर क्रिप्टोग्राफ़िक कुंजियाँ संग्रहीत करने देता है, जिससे डिवाइस से इन कुंजियों को निकालना अधिक कठिन हो जाता है।

Android Keystore यह सुनिश्चित करता है कि कुंजी सामग्री कभी भी आवेदन प्रक्रिया में प्रवेश नहीं करती है, इसलिए भले ही आपके एप्लिकेशन की प्रक्रियाएं समझौता कर लें और एक हमलावर आपकी कुंजी तक पहुंचने का प्रबंधन करता है, वे अपनी महत्वपूर्ण सामग्री को निकालने में असमर्थ होंगे।

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

अपने ContentProviders को निजी बनाएं

ContentProviders एक संरचित भंडारण तंत्र है जिसे आप अपने एप्लिकेशन के लिए निजी बना सकते हैं या निर्यात कर सकते हैं, जिस बिंदु पर वे अन्य ऐप्स के लिए सुलभ हो जाएंगे।

जब तक आपको स्पष्ट रूप से तीसरे पक्ष के एप्लिकेशन के साथ डेटा साझा करने की आवश्यकता नहीं होती है, आपको अपने सभी सामग्रीपॉइंटर्स को निजी बनाना चाहिए, उन्हें अपने आवेदन के मैनिफेस्ट में Android: Export = false के रूप में चिह्नित करके। यदि आपका एप्लिकेशन Android 4.1.1 या उससे कम संगत है, तो यह विशेष रूप से महत्वपूर्ण है कि आप अपने निजी ContentProviders को Android के रूप में चिह्नित करें: निर्यातित = गलत, क्योंकि सभी ContentProviders डिफ़ॉल्ट रूप से सार्वजनिक हैं।

बायोमेट्रिक प्रमाणीकरण के साथ अपने उपयोगकर्ताओं को फ़िंगरप्रिंट करें

उपयोगकर्ता को आपके एप्लिकेशन की किसी भी संवेदनशील जानकारी या सुविधाओं तक पहुंचने की अनुमति देने से पहले, आपको उनकी पहचान पूछकर उनकी पहचान सत्यापित करनी चाहिए।

उपयोगकर्ता क्रेडेंशियल्स एक पिन या पासवर्ड का रूप ले सकते हैं, हालांकि जहां भी संभव हो बायोमेट्रिक प्रमाणीकरण करना अधिक सुरक्षित है, उदाहरण के लिए उपयोगकर्ता के फिंगरप्रिंट का अनुरोध करके।

का पालन करें सब सर्वोत्तम प्रथाओं नेटवर्किंग

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

जब भी आपको नेटवर्क लेनदेन करने की आवश्यकता होती है, तो यह महत्वपूर्ण है कि आप Android के सभी नेटवर्किंग सर्वोत्तम प्रथाओं का पालन करें:

  • जब भी यह सर्वर पर समर्थित हो, HTTP के बजाय HTTPS का उपयोग करें।
  • असुरक्षित प्रोटोकॉल से डाउनलोड किए गए डेटा पर कभी भी भरोसा न करें, जिसमें HTTP के खिलाफ जारी कोई भी प्रतिक्रिया शामिल है।
  • संवेदनशील डेटा के लिए उपयुक्त प्रोटोकॉल का उपयोग करें, जैसे कि HttpsURLConnection।
  • जहां प्रमाणीकरण संभव है, सेवा के रूप में Android IPC तंत्र का उपयोग करें।
  • ज्ञात TLS / SSL सुरक्षाछिद्र और ग़लतफ़हमी के विरुद्ध अपने ऐप का परीक्षण करने के लिए ओपन सोर्स Nogotofail नेटवर्क सुरक्षा उपकरण का उपयोग करें। नोगोटोफेल में सामान्य एसएसएल प्रमाणपत्र सत्यापन मुद्दों, एचटीटीपीएस और टीएलएस / एसएसएल लाइब्रेरी बग, क्लियरटेक्स मुद्दे और एसएसएल और टीआरटीएलएस स्ट्रिपिंग मुद्दों के परीक्षण शामिल हैं। अधिक जानकारी के लिए, Nogotofail का GitHub पृष्ठ देखें।
  • जहाँ भी संभव हो, अपने एपीके के बाहर से कोड लोड करने से बचें क्योंकि इससे नेटवर्क में किसी के आपके कोड को संशोधित करते समय इसकी संभावना बढ़ जाती है।

WebViews का उपयोग सावधानी के साथ करें

WebView घटक HTML और जावास्क्रिप्ट का उपभोग कर सकता है, इसलिए यदि आप WebViews का गलत तरीके से उपयोग करते हैं, तो आपका एप्लिकेशन सामान्य वेब सुरक्षा समस्याओं जैसे क्रॉस-साइट स्क्रिप्टिंग के लिए असुरक्षित होगा।

यदि आप WebViews का गलत तरीके से उपयोग करते हैं, तो आपका एप्लिकेशन सामान्य वेब सुरक्षा समस्याओं के लिए असुरक्षित होगा।

Android उपयोगकर्ताओं को सुरक्षित रखने में सहायता के लिए, WebView घटक डिफ़ॉल्ट रूप से जावास्क्रिप्ट को निष्पादित नहीं करता है। हालाँकि, यदि आप WebSettings को पुनः प्राप्त करने के लिए getSettings () का उपयोग करके जावास्क्रिप्ट को सक्षम कर सकते हैं, और फिर setJavaScriptEnabled () विधि चला रहे हैं:

WebView myWebView = (WebView) findViewById (R.id.webview); WebSettings webSettings = myWebView.getSettings (); webSettings.setJavaScriptEnabled (सही);

यहां तक ​​कि अगर आपको जावास्क्रिप्ट को सक्षम करने की आवश्यकता है, तो आपको जहां भी संभव हो, addJavaScriptInterface () का उपयोग करने से बचना चाहिए, क्योंकि यह विधि WebView घटक में आपूर्ति की गई जावा ऑब्जेक्ट को इंजेक्ट करती है। यदि आपका ऐप एंड्रॉइड 4.2 या इससे पहले चलने वाले डिवाइस पर स्थापित है, तो यह विधि संभवतः जावास्क्रिप्ट को आपके एप्लिकेशन में हेरफेर करने की अनुमति दे सकती है।

यदि आप WebViews का उपयोग करते हैं, तो आपको उपयोगकर्ताओं को किसी भी वेबसाइट पर नेविगेट करने की अनुमति नहीं देनी चाहिए, जिसे आप नियंत्रित नहीं करते हैं, लेकिन विशेष रूप से आपको यह करना चाहिए कभी नहीँ यदि उपयोगकर्ता संभावित रूप से किसी अविश्वसनीय वेबपेज पर नेविगेट कर सकता है, तो addJavascriptInterface () विधि का उपयोग करें, क्योंकि यह एक बहुत बड़ा एंड्रॉइड ऐप सुरक्षा जोखिम है।

यदि उपयोगकर्ता संभावित रूप से किसी अविश्वसनीय वेबपृष्ठ पर नेविगेट कर सकते हैं, तो आपको ऐडजैसेस्क्रिप्टइंटरफेस () पद्धति का उपयोग कभी नहीं करना चाहिए।

यदि आपका WebView घटक किसी भी व्यक्तिगत डेटा तक पहुँच प्राप्त करता है, तो आप समय-समय पर क्लीयरचे () विधि का उपयोग करके स्थानीय रूप से संग्रहित किसी भी फाइल को हटाना चाहते हैं। वैकल्पिक रूप से, आप नो-कैश सर्वर-साइड हेडर का उपयोग करके अपने ऐप को संवेदनशील सामग्री को कैशिंग से रोक सकते हैं।

अपने ऐप के सिक्योर सॉकेट्स लेयर (एसएसएल) को प्रबंधित करें

SSL क्लाइंट और सर्वर के बीच एन्क्रिप्टेड संचार का एक सामान्य घटक है। यदि आपका ऐप SSL का गलत तरीके से उपयोग करता है तो दुर्भावनापूर्ण तृतीय पक्ष आपके एप्लिकेशन के डेटा को संभावित रूप से बाधित कर सकता है, जबकि यह एक नेटवर्क पर प्रसारित हो रहा है।

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

इस प्रक्रिया को आसान बनाने के लिए, सर्वरों को अक्सर प्रसिद्ध सर्टिफिकेट अथॉरिटीज (सीए) से प्रमाणपत्रों के साथ कॉन्फ़िगर किया जाता है। एपीआई स्तर 17 के अनुसार, एंड्रॉइड 100 से अधिक सीए का समर्थन करता है जो प्रत्येक रिलीज़ के साथ अपडेट किए जाते हैं। किसी सर्वर के लिए प्रमाणपत्र जारी करते समय, CA अपनी निजी कुंजी का उपयोग करके सर्वर प्रमाण पत्र पर हस्ताक्षर करेगा, और ग्राहक तब यह सत्यापित कर सकता है कि प्रमाणपत्र CA द्वारा जारी किया गया है जो Android प्लेटफ़ॉर्म द्वारा ज्ञात और विश्वसनीय है।

यदि आपका ऐप किसी ऐसे वेब सर्वर से संपर्क कर रहा है जिसके पास एक विश्वसनीय सीए द्वारा जारी किया गया प्रमाण पत्र है, तो आप कुछ ही पंक्तियों में अपना अनुरोध कर सकते हैं:

URL url = नया URL ("https://www.google.com"); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection (); urlConnection.connect (); InputStream = urlConnection.getInputStream ();

हालाँकि, कुछ परिदृश्य हैं जहाँ उपरोक्त कोड के परिणामस्वरूप अपवाद होगा:

  • सर्वर प्रमाणपत्र जारी करने वाला CA अज्ञात है। इस परिदृश्य में, आप CA के इस सेट पर भरोसा करने के लिए HttpsURLConnection सिखा सकते हैं।
  • सर्वर प्रमाणपत्र स्व-हस्ताक्षरित था, जिसका अर्थ है कि सर्वर अपने सीए के रूप में कार्य कर रहा है। स्व-हस्ताक्षरित प्रमाण पत्र के लिए, आप अपना स्वयं का ट्रस्टमैन बना सकते हैं, हालांकि आपको यह सुनिश्चित करना होगा कि आपके स्व-हस्ताक्षरित प्रमाणपत्र में एक मजबूत कुंजी है।
  • सर्वर कॉन्फ़िगरेशन एक मध्यवर्ती CA गुम है। कई सार्वजनिक सीए सीधे सर्वर प्रमाणपत्र पर हस्ताक्षर नहीं करते हैं। एंड्रॉइड केवल रूट सीए पर भरोसा करता है, इसलिए सर्वर को रूट तक पहुंचने के लिए आवश्यक किसी भी मध्यवर्ती के माध्यम से सर्वर सीए से प्रमाण पत्र की एक श्रृंखला भेजने की आवश्यकता होगी। यदि आप सर्वर श्रृंखला में मध्यवर्ती CA को शामिल करने के लिए सर्वर को कॉन्फ़िगर नहीं कर सकते हैं, तो अपना खुद का TrustManager बनाने के लिए एक संभव समाधान है।

एक नेटवर्क सुरक्षा विन्यास फाइल बनाना: कस्टम CA पर भरोसा करना

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

नेटवर्क सुरक्षा कॉन्फ़िगरेशन फ़ाइल बनाने के लिए:

  • यदि आपकी परियोजना में पहले से ही XML फ़ोल्डर नहीं है, तो आपको एक बनाने की आवश्यकता होगी। अपनी परियोजना के Res फ़ोल्डर को नियंत्रित करें और नया> Android संसाधन निर्देशिका चुनें।
  • अपनी XML निर्देशिका के अंदर एक नई XML संसाधन फ़ाइल बनाएँ, जो आपकी नेटवर्क सुरक्षा कॉन्फ़िगरेशन फ़ाइल के रूप में काम करेगी। मैं इस फ़ाइल का नामकरण कर रहा हूं network_config।
  • अपनी नेटवर्क कॉन्फ़िगरेशन फ़ाइल खोलें और निर्दिष्ट करें कि निम्न डोमेन के सभी ट्रैफ़िक को HTTPS का उपयोग करना चाहिए:

// स्पष्ट पाठ को अक्षम करें // // इस नियम को डोमेन और उसके सभी उप डोमेन पर लागू करें // my.domain.com ... ... ...

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

my.domain.com // सुरक्षित कनेक्शन के लिए ट्रस्ट एंकर का एक सेट // // ट्रस्ट-एंकर तत्वों के लिए प्रमाण पत्र का एक सेट और इन प्रमाण पत्रों का स्रोत //

अपने मैनिफेस्ट में नेटवर्क सुरक्षा कॉन्फ़िगरेशन फ़ाइल घोषित करना न भूलें:

फिर आपको PEM या DER प्रारूप में विश्वसनीय CA को अपने प्रोजेक्ट के Res / कच्चे / विश्वसनीय_cas में जोड़ना होगा।

अतिरिक्त सीए पर भरोसा करें, जहां उपयुक्त हो

अंत में, आप अतिरिक्त CA पर भरोसा करना चाह सकते हैं जो Android प्लेटफ़ॉर्म के लिए ज्ञात नहीं हैं। आपके आवेदन पर भरोसा करने वाले सीए की संख्या बढ़ाने के लिए, आपको कई प्रमाणपत्र स्रोतों को निर्दिष्ट करने की आवश्यकता होगी:

एसएमएस के माध्यम से कभी भी संवेदनशील डेटा न भेजें

यदि आपको अपने एप्लिकेशन से सर्वर से डेटा संचारित करने की आवश्यकता है, तो आपको Google क्लाउड मैसेजिंग (GCM) और IP मैसेजिंग का उपयोग करना चाहिए, और कभी भी अनएन्क्रिप्टेड एसएमएस प्रोटोकॉल का उपयोग नहीं करना चाहिए।

यह भी पढ़े: Android विकास: कॉल कैसे करें, एसएमएस प्राप्त करें और उपयोगकर्ताओं के संपर्कों को पुनः प्राप्त करें

एसएमएस एस का उपयोग करके आपको कभी भी संवेदनशील आदेश नहीं करना चाहिए, क्योंकि एसएमएस प्रसारण के रूप में प्रसारित होते हैं, जिसका अर्थ है कि READ_SMS की अनुमति के साथ कोई भी एप्लिकेशन अपनी सामग्री तक पहुंचने में सक्षम होगा।

सेफ्टीनेट एपीआई के साथ सुरक्षा खतरों से बचाव करें

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

Android निम्नलिखित सेफ्टीनेट एपीआई का समर्थन करता है:

  • सेफ्टीनेट अटेस्टेशन एपीआई। यह एंटी-एब्यूज एपीआई आपको एंड्रॉइड डिवाइस को एक्सेस करने देता है जहां आपका एप्लिकेशन चल रहा है, इसलिए आप यह निर्धारित कर सकते हैं कि आपके सर्वर वास्तविक डिवाइस के साथ इंटरैक्ट कर रहे हैं या नहीं।
  • सेफ्टीनेट सेफ ब्राउजिंग एपीआई। आप इस API का उपयोग यह निर्धारित करने के लिए कर सकते हैं कि Google ने किसी विशेष URL को ज्ञात खतरे के रूप में वर्गीकृत किया है या नहीं।
  • सेफ्टीनेट reCAPTCHA एपीआई। इस सेवा में एक reCAPTCHA API शामिल है जिसका उपयोग आप अपने ऐप को स्पैम और दुर्भावनापूर्ण ट्रैफ़िक जैसे खतरों से बचाने के लिए कर सकते हैं। यदि एपीआई को संदेह है कि आपका ऐप किसी बॉट के साथ बातचीत कर रहा है, तो वह कैप्चा की सेवा लेगा जिसे प्राप्तकर्ता को आपके ऐप का उपयोग जारी रखने से पहले हल करना होगा।
  • सेफ्टीनेट वेरिफाइड एप्स एपीआई। यदि आपके ऐप में संवेदनशील उपयोगकर्ता डेटा है, तो आप इस API का उपयोग डिवाइस के वेरिफ़ाइज़ ऐप्स फ़ीचर के साथ बातचीत करने के लिए कर सकते हैं, और जाँच सकते हैं कि डिवाइस दुर्भावनापूर्ण एप्लिकेशन से मुक्त है या नहीं। यदि डिवाइस सुरक्षित नहीं है, तो आप अपने ऐप की सभी संवेदनशील सुविधाओं को अक्षम करके कुछ नुकसान सीमा का प्रदर्शन कर सकते हैं। बस इस बात से अवगत रहें कि हालाँकि सेफ्टीनेट उपयोगकर्ताओं को किसी भी संभावित हानिकारक ऐप के बारे में सचेत करेगा जो उसे पता चलता है, इस बात की कोई गारंटी नहीं है कि उपयोगकर्ता वास्तव में इन ऐप को अनइंस्टॉल करेगा। इसके अलावा, हर समय दुर्भावनापूर्ण एप्लिकेशन जारी किए जाते हैं, और हैकर्स हमेशा रडार के नीचे खिसकने के नए और सरल तरीके लेकर आ रहे हैं, इसलिए यदि कोई डिवाइस सेफ्टीनेट टेस्ट पास करता है, तो आपको यह नहीं समझना चाहिए कि कोई हानिकारक ऐप नहीं हैं उपकरण।

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

संवेदनशील लेनदेन के लिए Android संरक्षित पुष्टिकरण का उपयोग करें

यदि आपके ऐप को एक संवेदनशील लेनदेन करने की आवश्यकता है, जैसे कि भुगतान करना, तो आप एंड्रॉइड 9 (एपीआई स्तर 28) या उच्चतर चलाने वाले उपकरणों पर एंड्रॉइड संरक्षित पुष्टि का उपयोग कर सकते हैं।

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

अधिक जानकारी के लिए, एंड्रॉइड प्रोटेक्टेड कन्फर्मेशन को लागू करने के तरीके के बारे में अधिक निर्देश, आधिकारिक एंड्रॉइड डॉक्स देखें।

Android 10: सीधे एम्बेडेड DEX कोड चलाएं

एंड्रॉइड 10 (एपीआई स्तर 29) और उच्चतर चलाने वाले उपकरणों पर, आपके ऐप की एपीके फ़ाइल से सीधे एम्बेडेड डीईएक्स कोड को चलाना संभव है, जो हैकर को डिवाइस के स्थानीय-संकलित कोड के साथ छेड़छाड़ करने पर भी हमले को रोकने में मदद कर सकता है।

यह भी पढ़ें: Android Q को एक्सप्लोर करना: अपने ऐप में बबल नोटिफिकेशन जोड़ना

इस नई सुरक्षा सुविधा को सक्षम करने के लिए, अपनी परियोजना का मेनिफेस्ट खोलें और निम्नलिखित को तत्व में जोड़ें:

इसके बाद, आपको एक एपीके फ़ाइल बनाने की आवश्यकता होगी जिसमें असम्पीडित DEX कोड हो जिसे ART सीधे एक्सेस कर सकता है। अपनी build.gradle फ़ाइल खोलें, और निम्नलिखित जोड़ें:

aaptOptions {noCompress dex}

बस इस बात से अवगत रहें कि आपका ऐप शुरू होने पर ART JIT कंपाइलर का उपयोग करेगा, जो आपके एप्लिकेशन के प्रदर्शन को प्रभावित कर सकता है।

समेट रहा हु

इस लेख में, हमने आपके Android एप्लिकेशन सुरक्षा को बनाए रखने में मदद करने के लिए उपयोग की जाने वाली सभी सर्वोत्तम प्रथाओं, टूल, API और तकनीकों को कवर किया है।

क्या आपके पास अपने आवेदन की सुरक्षा बढ़ाने के लिए कोई सलाह है? नीचे दिए गए टिप्पणियों में अपने सुझावों को साझा करना सुनिश्चित करें!

सैमसंग गैलेक्सी 9 2018 के सबसे अच्छे स्मार्टफोन्स में से एक है। हैंडसेट हाई-एंड स्पेसिफिकेशन्स, एक असाधारण कैमरा, एक खूबसूरत डिज़ाइन प्रदान करता है, और यह गैलेक्सी 8 के हर मापने योग्य तरीके से एक बड़ा...

सैमसंग गैलेक्सी 9 प्लस एक सबसे अच्छा स्मार्टफोन है जिसे आप अभी खरीद सकते हैं। जब आप गैलेक्सी 9 की सभी शानदार विशेषताओं को लेते हैं और एक बड़ी बैटरी और एक दोहरे कैमरा सेटअप को जोड़ते हैं, तो किसी भी स्...

ताजा पद