बैकअप के लिए सुरक्षा से जुड़े सुझाव

OWASP कैटगरी: MASVS-CODE: कोड क्वालिटी

खास जानकारी

ऐप्लिकेशन के बैकअप का मकसद, उपयोगकर्ताओं के डेटा को सुरक्षित रखना है, ताकि बाद में उसे किसी नए डिवाइस पर वापस लाया जा सके या डेटा के खो जाने पर उसे वापस लाया जा सके. ऐप्लिकेशन के बैकअप से जुड़े सुरक्षा के मौजूदा सुझावों में बारीक अंतर है. ये Android वर्शन और डिवाइस बनाने वाली कंपनियों के हिसाब से अलग-अलग होते हैं. इन सुझावों का मकसद यह पक्का करना है कि कोई भी संवेदनशील डेटा लीक न हो.

स्टैंडर्ड Android बैकअप सिस्टम, ऐप्लिकेशन को क्लाउड पर अपने डेटा का बैक अप लेने या ऑटो बैकअप (जो डिफ़ॉल्ट रूप से चालू होता है) के ज़रिए नए डिवाइस पर डेटा ट्रांसफ़र करने के लिए सबसे सुरक्षित, मज़बूत, और आसान समाधान देता है. इसे लागू करने के लिए कोई काम करने की ज़रूरत नहीं होती और इसे बढ़ाया भी जा सकता है. इसके अलावा, मुख्य वैल्यू वाले बैकअप की सुविधा भी मिलती है. हमारा सुझाव है कि आप इस तरीके का इस्तेमाल करें, क्योंकि इससे बैकअप डेटा को ऐसी डायरेक्ट्री में सेव किया जाता है जिसे तीसरे पक्ष के अन्य ऐप्लिकेशन ऐक्सेस नहीं कर सकते. साथ ही, यह बैकअप के दौरान डेटा को एन्क्रिप्ट (सुरक्षित) करने की सुविधा देता है. इसके अलावा, यह डेटा को ट्रांसफ़र के दौरान एन्क्रिप्ट (सुरक्षित) करने की सुविधा भी देता है. साथ ही, बैकअप से संवेदनशील डेटा को हटाने की सुविधा भी देता है.

अगर कोई ऐप्लिकेशन, बैकअप लेने के लिए Android के स्टैंडर्ड सिस्टम के बजाय कोई दूसरा तरीका इस्तेमाल करता है, तो गलतियों की संभावना बढ़ सकती है. इससे संवेदनशील डेटा लीक हो सकता है. उपयोगकर्ता के डेटा को लीक होने से बचाने के लिए, बैकअप के ऐसे गैर-स्टैंडर्ड तरीके इस्तेमाल किए जा सकते हैं जिनसे डेटा लीक हो सकता है. जैसे, "एक्सपोर्ट" या "बैकअप" की सुविधा देने वाले ऐप्लिकेशन. ये ऐप्लिकेशन, ऐप्लिकेशन के डेटा की कॉपी बनाते हैं, जिसे दूसरे ऐप्लिकेशन पढ़ सकते हैं. इसलिए, इस डेटा को सीधे तौर पर या अन्य कमजोरियों की मदद से लीक किया जा सकता है.

असर

ऐप्लिकेशन के बैकअप सेट अप करते समय, सुरक्षा से जुड़े सुझावों का पालन करने से, संवेदनशील डेटा के लीक होने से बचा जा सकता है. असल डेटा और हमलावर के इरादे के आधार पर, संवेदनशील डेटा लीक होने पर, जानकारी ज़ाहिर हो सकती है, उपयोगकर्ता के नाम पर काम किया जा सकता है, और वित्तीय नुकसान हो सकता है.

खतरों को कम करना

Android के स्टैंडर्ड बैकअप सिस्टम का इस्तेमाल करना

Android का स्टैंडर्ड बैकअप सिस्टम, बैकअप डेटा को एक जगह से दूसरी जगह भेजने के दौरान और एक जगह पर सेव करके रखने के दौरान, हमेशा एन्क्रिप्ट (सुरक्षित) करता है. यह एन्क्रिप्शन, डिवाइस पर इस्तेमाल किए जा रहे Android वर्शन और आपके डिवाइस में स्क्रीन लॉक होने या न होने के बावजूद लागू होता है. Android 9 से, अगर डिवाइस पर स्क्रीन लॉक सेट है, तो बैकअप डेटा को न सिर्फ़ एन्क्रिप्ट (सुरक्षित) किया जाता है, बल्कि उसे ऐसी कुंजी से एन्क्रिप्ट किया जाता है जिसकी जानकारी Google के पास नहीं होती. स्क्रीन लॉक की पासवर्ड कुंजी, एन्क्रिप्शन कुंजी को सुरक्षित रखती है. इससे, एंड-टू-एंड एन्क्रिप्शन की सुविधा चालू होती है.

आम तौर पर, डेटा स्टोरेज और सुरक्षा दिशा-निर्देशों का पालन करें.

अगर आपके बैकअप में खास तौर पर संवेदनशील डेटा शामिल है, तो हमारा सुझाव है कि आप इस डेटा को बाहर रखें. अगर ऐसा नहीं किया जा सकता, तो नीचे दिए गए सेक्शन में बताए गए तरीके से एंड-टू-एंड एन्क्रिप्शन की ज़रूरत होगी.

बैकअप से डेटा बाहर रखा जा रहा है

नियमों वाली फ़ाइल का इस्तेमाल करके, यह तय किया जा सकता है कि बैकअप में कौनसा डेटा शामिल न किया जाए. आम तौर पर, इसे backup_rules.xmlकहा जाता है और res/xml ऐप्लिकेशन फ़ोल्डर में रखा जाता है. Android के इस्तेमाल किए जा रहे वर्शन के आधार पर, बैकअप के नियमों को कॉन्फ़िगर करने के तरीके में कुछ अंतर होते हैं:

इसके बाद, backup_rules.xml फ़ाइल को कॉन्फ़िगर करें. इसके लिए, ऐप्लिकेशन में डेटा के सेव रहने और सुरक्षा से जुड़ी ज़रूरी शर्तों के मुताबिक, अपडेट किए गए कॉन्फ़िगरेशन फ़ॉर्मैट का पालन करें.

backup_rules.xml फ़ाइल कॉन्फ़िगरेशन के लिए ज़रूरी फ़ॉर्मैट की मदद से, डेवलपर Cloud और डिवाइस से डिवाइस (D2D) ट्रांसफ़र, दोनों के लिए बैकअप के कस्टम नियम तय कर सकते हैं. अगर <device-transfer>एट्रिब्यूट सेट नहीं है, तो डी2डी माइग्रेशन के दौरान ऐप्लिकेशन का सारा डेटा ट्रांसफ़र हो जाएगा. यह ध्यान रखना ज़रूरी है कि भले ही टारगेट किया गया ऐप्लिकेशन, Android 12 या उसके बाद के वर्शन को टारगेट करता हो, फिर भी Android 11 (एपीआई लेवल 30) या उससे पहले के वर्शन वाले डिवाइसों के लिए, बैकअप के नियमों के एक अतिरिक्त सेट वाली अलग फ़ाइल हमेशा दी जानी चाहिए.

इसके बाद, backup_rules.xml फ़ाइल को ऐप्लिकेशन के डेटा को बनाए रखने और सुरक्षा से जुड़ी ज़रूरी शर्तों के हिसाब से कॉन्फ़िगर करें. इसके लिए, उपयोगकर्ता के डेटा का बैक अप लें लेख में बताए गए सिंटैक्स का इस्तेमाल करें.

एंड-टू-एंड एन्क्रिप्शन (E2EE) की ज़रूरत है

अगर आपको अपने बैकअप से संवेदनशील डेटा को हटाने में समस्या आ रही है, तो हमारा सुझाव है कि आप एंड-टू-एंड एन्क्रिप्शन की ज़रूरत को पूरा करें. इसका मतलब है कि सिर्फ़ Android 9 या उसके बाद के वर्शन पर और सिर्फ़ लॉक स्क्रीन सेट होने पर बैकअप लेने की अनुमति दें. ऐसा करने के लिए, requireFlags="clientSideEncryption"फ़्लैग का इस्तेमाल करें. इसका नाम बदलकर disableIfNoEncryptionCapabilities करें और Android 12 से true पर सेट करें.

अगर Android के स्टैंडर्ड बैकअप सिस्टम का इस्तेमाल नहीं किया जा सकता

अगर Android के स्टैंडर्ड बैकअप सिस्टम का इस्तेमाल नहीं किया जा सकता, तो बैकअप डेटा को सुरक्षित तरीके से सेव करना और यह तय करना कि बैकअप में कौनसा डेटा शामिल न किया जाए, यह मुश्किल हो जाता है. इसे कोड लेवल पर तय किया जाना चाहिए और इस वजह से गड़बड़ी होने की आशंका है. इससे डेटा लीक होने का खतरा रहता है. इस स्थिति में, हमारा सुझाव है कि आप समय-समय पर, बैकअप लेने की प्रोसेस की जांच करते रहें. इससे यह पक्का किया जा सकेगा कि बैकअप लेने के तरीके में कोई बदलाव नहीं हुआ है.

संसाधन