"Android: allowBackup" क्या है?


267

के बाद से नई एडीटी पूर्वावलोकन संस्करण (संस्करण 21) , वे एक नया फाहा चेतावनी है कि मुझे मैनिफ़ेस्ट फ़ाइल पर अगली बात बताता है (आवेदन टैग में) है:

स्पष्ट रूप से एंड्रॉइड सेट करना चाहिए: allowBackup को सही या गलत (यह डिफ़ॉल्ट रूप से सही है, और एप्लिकेशन के डेटा के लिए कुछ सुरक्षा निहितार्थ हो सकते हैं)

में आधिकारिक वेबसाइट , वे लिखा है:

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

यह चेतावनी क्या है? बैकअप सुविधा क्या है, और मैं इसका उपयोग कैसे करूं?

इसके अलावा, चेतावनी मुझे यह क्यों बताती है कि इसके सुरक्षा निहितार्थ हैं? इस सुविधा को अक्षम करने के नुकसान और फायदे क्या हैं?


मैनिफ़ेस्ट के लिए बैकअप की दो अवधारणाएँ हैं:

  • "android: allowBackup " adb के माध्यम से बैकअप और रिस्टोर करने की अनुमति देता है, जैसा कि यहाँ दिखाया गया है :

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

इसे एक सुरक्षा समस्या माना जाता है क्योंकि लोग ADB के माध्यम से आपके ऐप का बैकअप ले सकते हैं और फिर अपने ऐप का निजी डेटा अपने पीसी में प्राप्त कर सकते हैं।

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

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

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

  • "android: backupAgent " क्लाउड का बैकअप और पुनर्स्थापना सुविधा का उपयोग करने की अनुमति देता है, जैसा कि यहां और यहां दिखाया गया है :

एप्लिकेशन के बैकअप एजेंट को कार्यान्वित करने वाले वर्ग का नाम, BackupAgent का उपवर्ग। विशेषता मान पूरी तरह से योग्य वर्ग नाम होना चाहिए (जैसे, "com.example.project.MyBackupAgent")। हालांकि, एक आशुलिपि के रूप में, अगर नाम का पहला चरित्र एक अवधि है (उदाहरण के लिए, ".MyBackupAgent"), तो इसे तत्व में निर्दिष्ट पैकेज नाम से जोड़ा जाता है। कोई डिफ़ॉल्ट नहीं है। नाम निर्दिष्ट किया जाना चाहिए।

यह कोई सुरक्षा समस्या नहीं है।


मुझे लगता है कि आपको अपने एडिट में उस अतिरिक्त जानकारी को हटा देना चाहिए, क्योंकि वह ADB बैकअप टूल के बजाय बैकअप क्लाउड सेवा का संदर्भ दे रही है, जो वास्तव में यह समस्या संदर्भित है (टोर नॉर्बी के उत्तर के अनुसार)
टोनी चैन

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

2
@IgorGanapolsky तो मैं अभी पूरी तरह से भ्रमित हूँ। उन्होंने 2 अलग-अलग विशेषताओं में इसका उल्लेख क्यों किया? क्या यह संभव है कि एक ही ध्वज दोनों विशेषताओं के लिए जिम्मेदार हो? या शायद यह एक गलती है? क्या आपको लगता है कि मुझे उस सवाल का जवाब नहीं देना चाहिए जिसका मैंने जवाब दिया है?
एंड्रॉइड डेवलपर

1
@androiddeveloper कारण यह है कि दोनों विशेषताओं पर एक ही सटीक विशेषता मौजूद है, क्योंकि यह एक ही अंतिम उद्देश्य के लिए है: डेटा का बैकअप लेना। चाहे डिवाइस पर हो या क्लाउड में ...
इगोरगानपोलस्की

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

जवाबों:


139

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

यदि आप ग्रहण के माध्यम से एक प्रकार का वृक्ष का उपयोग कर रहे हैं, तो या तो एक बार चेतावनी दृश्य खोलें, जहां आप एक प्रकार का वृक्ष त्रुटि का चयन कर सकते हैं और एक लंबी व्याख्या देख सकते हैं, या त्रुटि लाइन पर त्वरित सुधार (Ctrl-1) को आमंत्रित कर सकते हैं, और एक सुझाव है " इस मुद्दे को समझाएं ", जो एक फुलर स्पष्टीकरण को भी पॉप करेगा। यदि आप एक्लिप्स का उपयोग नहीं कर रहे हैं, तो आप एलआईएन ( lint --html <filename>) से एक एचटीएमएल रिपोर्ट तैयार कर सकते हैं जिसमें चेतावनियों के बगल में पूर्ण स्पष्टीकरण शामिल हैं, या आप किसी विशेष मुद्दे को समझाने के लिए लिंट से पूछ सकते हैं। उदाहरण के लिए, allowBackupआईडी से संबंधित समस्या AllowBackup(त्रुटि संदेश के अंत में दिखाई गई है), इसलिए पूर्ण विवरण है:

$ ./lint --show AllowBackup
AllowBackup
-----------
Summary: Ensure that allowBackup is explicitly set in the application's
manifest

Priority: 3 / 10
Severity: Warning
Category: Security

allowBackupविशेषता को निर्धारित करता है एक आवेदन के डेटा का बैकअप ले लिया जा सकता है अगर और बहाल के रूप में दस्तावेज यहाँ

डिफ़ॉल्ट रूप से, यह ध्वज सेट है true। जब इस ध्वज को सेट किया जाता है true, तो एप्लिकेशन डेटा का उपयोग करके adb backupऔर उपयोग करके उपयोगकर्ता द्वारा पुनर्स्थापित किया जा सकता है adb restore

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

allowBackup="false"बैकअप और रीस्टोर दोनों में से किसी एक एप्लीकेशन को सेट करना ।

इस चेतावनी को ठीक करने के लिए, यह तय करें कि आपके एप्लिकेशन को बैकअप का समर्थन करना चाहिए या स्पष्ट रूप से सेट करना चाहिए android:allowBackup=(true|false)

अधिक जानकारी के लिए यहां क्लिक करें


35
उपयोगकर्ता आमतौर पर यह भी नहीं जानते हैं कि adb क्या है, और यदि वे करते हैं, तो वे शायद जानते हैं कि कैसे अपने डिवाइस को रूट करना है और डेटा को किसी भी तरह से प्राप्त करना है, नहीं?
एंड्रॉयड डेवलपर

1
@ जब आप "डिवाइस के एप्लिकेशन डेटा को कॉपी करते हैं" कहते हैं, तो क्या आपका मतलब डेटा / डेटा / com.myapp से या sdcard से है? पूर्व निर्देशिका संरक्षित है और डिवाइस को रूट किए जाने तक पढ़ा नहीं जा सकता है।
इगोरगानापोलस्की

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

1
@IgorGanapolsky मुझे लगता है कि ADB का उपयोग करने से निजी डेटा कॉपी हो जाएगा, और इसीलिए एक चेतावनी है। मुझे लगता है कि केवल वे लोग जिनके पास डीबगिंग सुविधा सक्षम है और अपने डिवाइस को पीसी से कनेक्ट करने के लिए प्रभावित हैं। ऐसे लोग आमतौर पर पावर उपयोगकर्ता या डेवलपर होते हैं, इसलिए उन्हें पता होना चाहिए कि वे क्या कर रहे हैं। सुरक्षा जोखिम उन लोगों के लिए है जिन्होंने इसे गलती से किया था और पीसी पर एक दुर्भावनापूर्ण ऐप इंस्टॉल किया था जो उन कार्यों को करने के लिए एडीबी टूल का उपयोग करता है। बिना रूट के बैकअप और पुनर्स्थापना के लिए एक ऐप है, जिसे "हीलियम" कहा जाता है: play.google.com/store/apps/…
Android डेवलपर

"यदि आप ग्रहण के माध्यम से एक प्रकार का वृक्ष का उपयोग कर रहे हैं .." आपको संभवतः ADSt Plugin के अवक्षेपित होने के बाद AndroidStudio पर माइग्रेट करना चाहिए।
प्रातः

26

यहाँ इस मायने में बैकअप का क्या मतलब है:

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

~ Http://developer.android.com/guide/topics/data/backup.html से लिया गया

आप इस बैकअप सेवा के लिए यहां डेवलपर के रूप में पंजीकरण कर सकते हैं: https://developer.android.com/google/backup/signup.html

जिस प्रकार के डेटा का बैकअप लिया जा सकता है, वे हैं फाइल, डेटाबेस, शेयर्सप्रेफर, कैश और लीब। ये आम तौर पर आपके डिवाइस के /data/data/ Iscom.myapp] डायरेक्टरी में संग्रहीत होते हैं, जो तब तक पढ़ा-संरक्षित होता है और जब तक आपके पास रूट विशेषाधिकार न हों, तब तक इसे एक्सेस नहीं किया जा सकता है।

अद्यतन : आप इस ध्वज को BackupManager के एप डॉक: BackupManager पर सूचीबद्ध देख सकते हैं


4
मुझे लगता है कि एपीआई स्तर 23 में बदलाव इसका सही जवाब है। यहाँ परिवर्तनों के लिए प्रशिक्षण डॉक्स हैं: developer.android.com/training/backup/autosyncapi.html
pumpkinpie65

8

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

http://developer.android.com/reference/android/R.attr.html#allowBackup http://developer.android.com/reference/android/app/backup/BackupManager.html http://developer.android। com / गाइड / विषयों / डेटा / backup.html


क्या होगा अगर ऐप में बैकअपएजेंट से संबंधित कुछ भी नहीं है? Android अपने डेटा को स्वचालित रूप से फिर भी बैकअप करेगा?
Android डेवलपर

1
सही उत्तर यहां दिया गया है: stackoverflow.com/a/13806946/878126 । ऐसा लगता है कि इसका backupAgent से कोई लेना-देना नहीं है। मैंने यह दिखाने के लिए अपने प्रश्न को अपडेट किया है कि यह सब क्या है।
एंड्रॉइड डेवलपर

3

यह गोपनीयता की चिंता है। यह संवेदनशील डेटा शामिल है, तो यह एक app बैकअप करने के लिए उपयोगकर्ताओं को अस्वीकार करने के लिए सिफारिश की है। बैकअप फ़ाइलों (यानी जब android:allowBackup="true") तक पहुंच होने के बाद , गैर-रूट किए गए डिवाइस पर भी ऐप की सामग्री को संशोधित / पढ़ना संभव है।

समाधान - android:allowBackup="false"मैनिफ़ेस्ट फ़ाइल में उपयोग करें ।

अधिक जानकारी के लिए आप इस पोस्ट को पढ़ सकते हैं: बैकअप तकनीक का उपयोग करके एंड्रॉइड ऐप हैक करना


1
क्या आप 2017 में इस उत्तर के साथ गंभीर हैं? कृपया इसे यहां पढ़ें डेवलपर
।android.com

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

वर्तमान में आप मैनिफ़ेस्ट में attribs के माध्यम से बैकअप से संवेदनशील डेटा को बाहर कर सकते हैं।
योषा अलायूब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.