“Android: allowBackup” nedir?


267

Yana yeni ADT önizleme sürümü (sürüm 21) , bunlar (uygulama etiketi) Bana apaçık dosya üzerinde sonraki şey söyler yeni tiftik uyarı var:

Android: allowBackup öğesini açıkça true veya false olarak ayarlamalıdır (varsayılan olarak doğrudur ve uygulamanın verileri için bazı güvenlik etkileri olabilir)

Gelen resmi web sitesi , bunlar yazdık:

Birkaç yeni kontrol: Uygulamanızın yedeklemeye izin verip vermediğine ve bir etiket kontrolüne açıkça karar vermelisiniz. Kütüphane yolunu ayarlamak için yeni bir komut satırı bayrağı var. Düzenleme sırasında artımlı tiftik analizinde birçok gelişme.

Bu uyarı nedir? Yedekleme özelliği nedir ve nasıl kullanılır?

Ayrıca, uyarı neden bunun güvenlikle ilgili sonuçları olduğunu söylüyor? Bu özelliği devre dışı bırakmanın dezavantajları ve avantajları nelerdir?


Manifest için iki yedekleme kavramı vardır:

  • "android: allowBackup " burada gösterildiği gibi adb üzerinden yedekleme ve geri yüklemeye izin verir :

Uygulamanın yedekleme ve geri yükleme altyapısına katılmasına izin verilip verilmeyeceği. Bu özellik false değerine ayarlanırsa, aksi takdirde tüm uygulama verilerinin adb yoluyla kaydedilmesine neden olacak tam sistem yedeklemesi ile bile uygulamanın hiçbir yedeği veya geri yüklemesi gerçekleştirilmez. Bu özniteliğin varsayılan değeri true'dur.

Bu, bir güvenlik sorunu olarak kabul edilir, çünkü kullanıcılar uygulamanızı ADB aracılığıyla yedekleyebilir ve ardından uygulamanızın özel verilerini PC'lerine alabilir.

Ancak, bence bu bir problem değil, çünkü çoğu kullanıcı adb'nin ne olduğunu bilmiyor ve eğer yaparlarsa, cihazın nasıl kökleneceğini de bilecekler. ADB işlevleri yalnızca aygıtta hata ayıklama özelliği etkinse çalışır ve kullanıcının bunu etkinleştirmesi gerekir.

Bu nedenle, yalnızca cihazlarını PC'ye bağlayan ve hata ayıklama özelliğini etkinleştiren kullanıcılar etkilenecektir. Bilgisayarlarında ADB araçlarını kullanan kötü amaçlı bir uygulamaları varsa, uygulama özel depolama verilerini okuyabildiğinden bu sorunlu olabilir.

Google'ın, ADB aracılığıyla uygulamaların yedeklenmesine ve geri yüklenmesine izin vermek için geliştirici kategorisinde varsayılan olarak devre dışı bırakılmış bir özellik eklemesi gerektiğini düşünüyorum.

  • "android: backupAgent ", burada ve burada gösterildiği gibi bulutun yedekleme ve geri yükleme özelliğini kullanmanızı sağlar :

Uygulamanın sınıfının adı, uygulamanın BackupAgent alt sınıfı olan yedekleme aracısıdır. Özellik değeri tam olarak nitelenmiş bir sınıf adı olmalıdır (örneğin "com.example.project.MyBackupAgent"). Ancak, steno olarak, adın ilk karakteri nokta ise (örneğin, ".MyBackupAgent"), öğede belirtilen paket adına eklenir. Varsayılan yok. Ad belirtilmelidir.

Bu bir güvenlik sorunu değil.


Düzenlemenizdeki bu ek bilgileri kaldırmanız gerektiğini düşünüyorum, çünkü bu sorunun aslında başvurduğu ADB yedekleme aracı yerine Yedek bulut hizmetine atıfta bulunuyoruz (Tor Norbye'nin cevabına göre)
Tony Chan

@Turbo evet haklısın. Ben okuduğumda bu kadar güncellenmemiş olduğunu düşünüyorum, ama şimdi açık. soruyu güncelleyeceğim. Teşekkürler. ibb yedekleme özelliği köklü cihazlarda bile yanlış olarak ayarlanmış uygulamalar için kullanılabilir olup olmadığını merak ediyorum.
android geliştirici

2
@IgorGanapolsky bu yüzden şu anda tamamen kafam karıştı. neden tamamen farklı 2 özellikte bahsettiler? her iki özellikten de aynı bayrağın sorumlu olması mümkün müdür? ya da belki bu bir hatadır? sorduğum cevabın işaretini kaldırmam gerektiğini mi düşünüyorsun?
android geliştirici

1
@androiddeveloper Her iki özellikte de aynı özniteliğin var olmasının nedeni büyük olasılıkla aynı nihai amaca yönelik olmasıdır: verilerin yedeklenmesi. Cihazda mı yoksa bulutta mı ...
IgorGanapolsky

3
Bir Android kullanıcısı olarak, bunu bulan herkes için tartmak istiyorum ve yedeklemeyi devre dışı bırakan uygulamalara dayanamayacağımı ve çok fazla olduğunu söyleyebilirim. Bir kişinin kilidi açık bir telefona erişimi varsa, verileri telefondan kopyalayabilmelidir. Bu noktada herhangi bir "güvenlik" ölçüsü anlamsızdır, çünkü verileri almak için her zaman telefonu rootlayabilirler. Ancak bir kullanıcı olarak, uygulama verilerimi (Knox bitimi köklendirmeden ve açmadan) yedekleyebilmek çok değerli. Pek çok uygulamanın buna izin vermemesi gerçekten sinir bozucu ve dürüst olmak gerekirse Android'de bu geçiş bile var.
Nathan Stretch

Yanıtlar:


139

Bu tiftik uyarısı için, diğer tüm tiftik uyarılarında olduğu gibi, tek satırlık hata mesajındakinden daha ayrıntılı bir açıklama alabileceğinizi unutmayın; daha fazla bilgi için web'de arama yapmanız gerekmez.

Eclipse aracılığıyla tiftik kullanıyorsanız, tiftik hatasını seçebileceğiniz ve daha uzun bir açıklama görebileceğiniz tiftik uyarıları görünümünü açın veya hata satırındaki hızlı düzeltmeyi (Ctrl-1) çağırın ve önerilerden biri " Bu sorunu açıklayın ", ki bu da daha dolgun bir açıklama getirecektir. Eclipse kullanmıyorsanız, lint ( lint --html <filename>) öğesinden uyarıların yanında tam açıklamalar içeren bir HTML raporu oluşturabilir veya lint'ten belirli bir sorunu açıklamasını isteyebilirsiniz. Örneğin, ile ilgili sorun allowBackupkimliğe sahiptir AllowBackup(hata iletisinin sonunda gösterilir), bu nedenle daha kapsamlı açıklama şöyledir:

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

Priority: 3 / 10
Severity: Warning
Category: Security

allowBackupBelgelendiği gibi bir uygulamanın veri yedeklenir ve geri yüklenebilir ise nitelik belirler burada .

Varsayılan olarak, bu bayrak olarak ayarlanmıştır true. Bu bayrak ayarlandığında true, uygulama verileri yedeklenmiş ve kullanarak kullanıcı tarafından restore edilebilir adb backupve adb restore.

Bunun bir uygulama için güvenlik sonuçları olabilir. adb backupUSB hata ayıklamasını etkinleştiren kullanıcıların uygulama verilerini cihazdan kopyalamasına izin verir. Yedeklendikten sonra, tüm uygulama verileri kullanıcı tarafından okunabilir. adb restorekullanıcı tarafından belirtilen bir kaynaktan uygulama verilerinin oluşturulmasına izin verir. Bir geri yüklemeyi takiben, uygulamalar verilerin, dosya izinlerinin ve dizin izinlerinin uygulamanın kendisi tarafından oluşturulduğunu varsaymamalıdır.

Ayar, allowBackup="false"bir uygulamayı hem yedeklemeden hem de geri yüklemeden çıkarır.

Bu uyarıyı düzeltmek için uygulamanızın yedeklemeyi destekleyip desteklemeyeceğine karar verin ve android:allowBackup=(true|false)

Daha fazla bilgi için buraya tıklayın


35
Kullanıcılar genellikle adb'nin ne olduğunu bile bilmiyorlar ve eğer yaparlarsa, muhtemelen cihazlarını nasıl köklendireceklerini ve verileri yine de kendileri elde edeceklerini biliyorlar, değil mi?
android geliştirici

1
@Tor "Uygulama verilerini cihazdan kopyala" derken, data / data / com.myapp'dan veya sdcard'dan mı kopyalamak istersiniz? Eski dizin korunur ve aygıt köklenmedikçe okunamaz.
IgorGanapolsky

2
Bu yüzden Lint'in referans aldığı bu yedeklemenin bulut yedekleme hizmeti değil ADB aracı olduğu doğru mu? Diğer cevapların birçoğu kafa karıştırıyor gibi görünüyor.
Tony Chan

1
@IgorGanapolsky bence ADB kullanarak özel verileri kopyalamak ve bu yüzden bir uyarı var. Ben sadece hata ayıklama özelliği etkin olan ve cihazlarını PC'ye bağlayan insanlar etkilenir düşünüyorum. bu tür insanlar genellikle güçlü kullanıcılar veya geliştiricilerdir, bu yüzden ne yaptıklarını bilmelidirler. güvenlik riski, bunu yanlışlıkla yapan ve bu işlemleri yapmak için ADB aracını kullanan PC'ye kötü amaçlı bir uygulama yükleyen kişiler içindir. : "Helyum" denilen yedekleme ve root olmadan geri için bir uygulama vardır play.google.com/store/apps/...
android geliştirici

"Eclipse aracılığıyla tüy bırakıyorsanız .." ADT Eklentisi kullanımdan kaldırıldığı için muhtemelen AndroidStudio'ya geçmelisiniz.
throws_exceptions_at_you

26

Bu anlamda yedeklemenin gerçekten anlamı şudur:

Android'in yedekleme hizmeti, uygulama verileri ve ayarları için bir geri yükleme noktası sağlamak amacıyla kalıcı uygulama verilerinizi uzak "bulut" depolama alanına kopyalamanızı sağlar. Bir kullanıcı fabrika ayarlarına sıfırlama yaparsa veya yeni bir Android destekli cihaza dönüştürürse, uygulama yeniden yüklendiğinde sistem otomatik olarak yedekleme verilerinizi geri yükler. Bu şekilde, kullanıcılarınızın önceki verilerini veya uygulama ayarlarını yeniden oluşturmaları gerekmez.

~ Http://developer.android.com/guide/topics/data/backup.html adresinden alınmıştır.

Bu yedekleme hizmetine geliştirici olarak buradan kaydolabilirsiniz: https://developer.android.com/google/backup/signup.html

Yedeklenebilecek veri türü dosyalar, veritabanları, sharedPreferences, önbellek ve lib'dir. Bunlar genellikle cihazınızın /data/data/[com.myapp] dizininde saklanır ve bu dosya okuma korumalıdır ve kök ayrıcalıklarınız olmadığı sürece erişilemez.

GÜNCELLEME : Bu bayrağı BackupManager'ın api doc'sinde görebilirsiniz: BackupManager


4
API düzeyi 23'teki değişikliklerin bu sorunun doğru yanıt olduğuna işaret ettiğini düşünüyorum. İşte değişiklikler için eğitim dokümanları: developer.android.com/training/backup/autosyncapi.html
pumpkinpie65

8

Bu açıkça belirtilmez, ancak aşağıdaki dokümanlara dayanarak, bir uygulamanın veri yedeklemesinin çalışması için bir BackupAgent bildirmesi ve uygulaması gerektiğini, allowBackup true olarak ayarlandığında bile ( varsayılan değer).

http://developer.android.com/reference/android/R.attr.html#allowBackup http://developer.android.com/reference/android/app/backup/BackupManager.html http://developer.android. com / rehber / konular / veri / backup.html


uygulamanın backupAgent ile ilgili bir şeyi yoksa ne olur? Android yine de verilerini otomatik olarak yedekleyecek mi?
android geliştirici

1
doğru cevap burada bulunur: stackoverflow.com/a/13806946/878126 . backupAgent ile ilgisi yok gibi görünüyor. Ben de bunun ne olduğunu göstermek için sorumu güncelledim.
android geliştirici

3

Bu gizlilik meselesidir. Hassas veriler içeriyorsa, kullanıcıların bir uygulamayı yedeklemelerine izin verilmemesi önerilir. Yedek dosyalara (yani ne zaman android:allowBackup="true") erişime sahipse, bir uygulamanın içeriğini köklü olmayan bir cihazda bile değiştirmek / okumak mümkündür.

Çözüm - android:allowBackup="false"bildirim dosyasında kullanın .

Daha fazla bilgi için bu yayını okuyabilirsiniz: Yedekleme Tekniklerini Kullanarak Android Uygulamalarını Hackleme


1
2017'de bu cevapla ciddi misin? lütfen buradan okuyun developer.android.com/guide/topics/data/…
batmaci

Android: allowBackup öğesini false olarak ayarlayarak yedeklemeleri devre dışı bırakabilirsiniz. Uygulamanız durumunu başka bir mekanizma yoluyla yeniden oluşturabiliyorsa veya uygulamanız Android'in yedeklememesi gereken hassas bilgilerle ilgileniyorsa bunu yapmak isteyebilirsiniz.
Edgar Khimich

Şu anda, manifest'teki attribs aracılığıyla hassas verileri yedeklerden hariç tutabilirsiniz.
Yousha Aleayoub
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.