Apa itu "android: allowBackup"?

267

Karena versi pratinjau ADT baru (versi 21) , mereka memiliki peringatan serat baru yang memberi tahu saya hal berikutnya pada file manifes (dalam tag aplikasi):

Harus secara eksplisit mengatur android: allowBackup ke true atau false (itu benar secara default, dan itu dapat memiliki beberapa implikasi keamanan untuk data aplikasi)

Di situs web resmi , mereka telah menulis:

Beberapa pemeriksaan baru: Anda harus secara eksplisit memutuskan apakah aplikasi Anda memungkinkan cadangan, dan pemeriksaan label. Ada bendera baris perintah baru untuk mengatur jalur perpustakaan. Banyak perbaikan pada analisis serat tambahan saat mengedit.

Peringatan apa ini? Apa fitur cadangan, dan bagaimana cara menggunakannya?

Juga, mengapa peringatan itu memberi tahu saya ini memiliki implikasi keamanan? Apa kerugian dan kelebihan dari menonaktifkan fitur ini?


Ada dua konsep cadangan untuk manifes:

  • "android: allowBackup " memungkinkan untuk membuat cadangan dan memulihkan melalui adb, seperti yang ditunjukkan di sini :

Apakah akan mengizinkan aplikasi untuk berpartisipasi dalam cadangan dan memulihkan infrastruktur. Jika atribut ini disetel ke false, tidak ada cadangan atau pengembalian aplikasi yang akan dilakukan, bahkan oleh cadangan sistem lengkap yang jika tidak akan menyebabkan semua data aplikasi disimpan melalui adb. Nilai default atribut ini benar.

Ini dianggap sebagai masalah keamanan karena orang dapat membuat cadangan aplikasi Anda melalui ADB dan kemudian mendapatkan data pribadi dari aplikasi Anda ke PC mereka.

Namun, saya pikir itu bukan masalah, karena sebagian besar pengguna tidak tahu apa adb itu, dan jika mereka tahu, mereka juga akan tahu bagaimana cara me-rooting perangkat. Fungsi ADB hanya akan berfungsi jika perangkat mengaktifkan fitur debugging, dan ini membutuhkan pengguna untuk mengaktifkannya.

Jadi, hanya pengguna yang menghubungkan perangkat mereka ke PC dan mengaktifkan fitur debugging akan terpengaruh. Jika mereka memiliki aplikasi jahat pada PC mereka yang menggunakan alat ADB, ini bisa menjadi masalah karena aplikasi tersebut dapat membaca data penyimpanan pribadi.

Saya pikir Google seharusnya menambahkan fitur yang dinonaktifkan secara default, dalam kategori pengembang, untuk memungkinkan pencadangan & pengembalian aplikasi melalui ADB.

  • "android: backupAgent " memungkinkan untuk menggunakan fitur backup dan restore cloud, seperti yang ditunjukkan di sini dan di sini :

Nama kelas yang mengimplementasikan agen cadangan aplikasi, subkelas dari BackupAgent. Nilai atribut harus nama kelas yang sepenuhnya memenuhi syarat (seperti, "com.example.project.MyBackupAgent"). Namun, sebagai steno, jika karakter pertama nama adalah titik (misalnya, ".MyBackupAgent"), itu ditambahkan ke nama paket yang ditentukan dalam elemen. Tidak ada standar. Nama harus ditentukan.

Ini bukan masalah keamanan.

pengembang android
sumber
Saya pikir Anda harus menghapus info tambahan itu dalam Edit Anda, karena itu merujuk pada layanan cloud Pencadangan, alih-alih alat cadangan ADB yang sebenarnya dirujuk masalah ini (sesuai jawaban Tor Norbye)
Tony Chan
@ Turbo ya Anda benar. Saya pikir itu tidak diperbarui sebanyak ini ketika saya sudah membacanya, tapi sekarang sudah jelas. saya akan memperbarui pertanyaan. Terima kasih. saya ingin tahu apakah fitur cadangan adb dapat digunakan pada perangkat yang di-rooting bahkan untuk aplikasi yang telah disetel ke false.
pengembang android
2
@IgorGanapolsky jadi saya benar-benar bingung sekarang. mengapa mereka menyebutkannya dalam 2 fitur yang sama sekali berbeda? apakah mungkin bendera yang sama bertanggung jawab untuk kedua fitur? atau mungkin itu kesalahan? Menurut Anda apakah saya harus menghilangkan jawaban yang sudah saya centang?
Pengembang Android
1
@androiddeveloper Alasan bahwa atribut persis sama ada pada kedua fitur mungkin karena dimaksudkan untuk tujuan akhir yang sama: membuat cadangan data. Baik di perangkat atau di awan ...
IgorGanapolsky
3
Sebagai pengguna Android, saya ingin mempertimbangkan siapa saja yang menemukan ini, dan mengatakan bahwa saya tidak tahan dengan aplikasi - dan ada banyak - yang menonaktifkan cadangan. Jika seseorang memiliki akses ke telepon yang tidak terkunci, mereka harus dapat menyalin data darinya. Setiap ukuran "keamanan" pada saat itu tidak ada artinya, karena mereka selalu dapat melakukan rooting pada ponsel untuk mendapatkan data. Tetapi sebagai pengguna, dapat mencadangkan data aplikasi saya (tanpa rooting dan tersandung bit Knox saya) sangat berharga. Ini benar-benar membuat frustasi karena begitu banyak aplikasi yang tidak mengizinkannya, dan sejujurnya Android bahkan memiliki saklar ini sama sekali.
Nathan Stretch

Jawaban:

139

Untuk peringatan serat ini, seperti untuk semua peringatan serat lainnya, perhatikan bahwa Anda bisa mendapatkan penjelasan yang lebih lengkap daripada hanya apa yang ada dalam pesan kesalahan satu baris; Anda tidak perlu mencari di web untuk info lebih lanjut.

Jika Anda menggunakan serat melalui Eclipse, buka tampilan peringatan serat, tempat Anda dapat memilih kesalahan serat dan melihat penjelasan yang lebih panjang, atau gunakan perbaikan cepat (Ctrl-1) pada baris kesalahan, dan salah satu sarannya adalah " Jelaskan masalah ini ", yang juga akan memunculkan penjelasan yang lebih lengkap. Jika Anda tidak menggunakan Eclipse, Anda dapat menghasilkan laporan HTML dari lint ( lint --html <filename>) yang mencakup penjelasan lengkap di sebelah peringatan, atau Anda dapat meminta lint untuk menjelaskan masalah tertentu. Misalnya, masalah terkait dengan allowBackupmemiliki id AllowBackup(ditampilkan di akhir pesan kesalahan), jadi penjelasan yang lebih lengkap adalah:

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

Priority: 3 / 10
Severity: Warning
Category: Security

The allowBackupatribut menentukan apakah data aplikasi dapat didukung dan dipulihkan, seperti yang didokumentasikan di sini .

Secara default, flag ini disetel ke true. Ketika bendera ini disetel ke true, data aplikasi dapat dicadangkan dan dipulihkan oleh pengguna menggunakan adb backupdan adb restore.

Ini mungkin memiliki konsekuensi keamanan untuk suatu aplikasi. adb backupmemungkinkan pengguna yang telah mengaktifkan USB debugging untuk menyalin data aplikasi dari perangkat. Setelah dicadangkan, semua data aplikasi dapat dibaca oleh pengguna. adb restorememungkinkan pembuatan data aplikasi dari sumber yang ditentukan oleh pengguna. Setelah pemulihan, aplikasi tidak boleh berasumsi bahwa data, izin file, dan izin direktori dibuat oleh aplikasi itu sendiri.

Pengaturan allowBackup="false"memilih aplikasi dari cadangan dan pemulihan.

Untuk memperbaiki peringatan ini, putuskan apakah aplikasi Anda harus mendukung cadangan dan ditetapkan secara eksplisit android:allowBackup=(true|false)

Klik di sini untuk informasi lebih lanjut

Tor Norbye
sumber
35
pengguna biasanya bahkan tidak tahu apa itu adb, dan jika ya, mereka mungkin tahu cara me-root perangkat mereka dan mendapatkan data sendiri, toh?
Pengembang android
1
@Tor Ketika Anda mengatakan "salin data aplikasi dari perangkat", maksud Anda salin dari data / data / com.myapp atau dari sdcard? Direktori sebelumnya dilindungi dan tidak dapat dibaca kecuali perangkat di-root.
IgorGanapolsky
2
Jadi untuk klarifikasi cadangan ini yang direferensikan Lint adalah alat ADB, dan bukan layanan cadangan cloud, benar? Sepertinya banyak jawaban lain yang membingungkan.
Tony Chan
1
@IgorGanapolsky saya pikir menggunakan ADB akan menyalin data pribadi, dan itu sebabnya ada peringatan. Saya pikir hanya orang-orang yang memiliki fitur debugging diaktifkan dan menghubungkan perangkat mereka ke PC yang terpengaruh. orang seperti itu biasanya adalah pengguna atau pengembang yang tangguh, jadi mereka harus tahu apa yang mereka lakukan. risiko keamanan adalah untuk orang-orang yang melakukannya secara tidak sengaja dan menginstal aplikasi jahat pada PC yang menggunakan alat ADB untuk melakukan operasi tersebut. ada aplikasi untuk pencadangan & pengembalian tanpa root, yang disebut "Helium": play.google.com/store/apps/…
pengembang android
"Jika Anda menggunakan serat melalui Eclipse .." Anda mungkin harus bermigrasi ke AndroidStudio karena Plugin ADT sudah tidak digunakan lagi.
throws_exceptions_at_you
26

Inilah arti cadangan dalam arti ini:

Layanan cadangan Android memungkinkan Anda untuk menyalin data aplikasi Anda yang persisten ke penyimpanan "cloud" jarak jauh, untuk memberikan titik pemulihan untuk data dan pengaturan aplikasi. Jika pengguna melakukan reset pabrik atau mengkonversi ke perangkat yang diberdayakan Android baru, sistem akan secara otomatis mengembalikan data cadangan Anda ketika aplikasi diinstal ulang. Dengan cara ini, pengguna Anda tidak perlu mereproduksi pengaturan data atau aplikasi mereka sebelumnya.

~ Diambil dari http://developer.android.com/guide/topics/data/backup.html

Anda dapat mendaftar untuk layanan cadangan ini sebagai pengembang di sini: https://developer.android.com/google/backup/signup.html

Jenis data yang dapat dicadangkan adalah file, database, sharedPreferences, cache, dan lib. Ini umumnya disimpan di direktori /data/data/[com.myapp] perangkat Anda, yang dilindungi baca dan tidak dapat diakses kecuali Anda memiliki hak akses root.

UPDATE : Anda dapat melihat bendera ini terdaftar di api doc BackupManager : BackupManager

IgorGanapolsky
sumber
4
Saya pikir perubahan pada API level 23 menunjukkan bahwa ini adalah jawaban yang benar. Inilah dokumen pelatihan untuk perubahan: developer.android.com/training/backup/autosyncapi.html
pumpkinpie65
8

Ini tidak disebutkan secara eksplisit, tetapi berdasarkan dokumen berikut, saya pikir tersirat bahwa aplikasi perlu mendeklarasikan dan mengimplementasikan BackupAgent agar cadangan data berfungsi, bahkan dalam kasus ketika allowBackup disetel ke true (yang merupakan nilai default).

http://developer.android.com/reference/android/R.attr.html#allowBackup http://developer.android.com/reference/android/app/backup/BackupManager.html http://developer.android. com / panduan / topik / data / backup.html

Yuntao
sumber
bagaimana jika aplikasi tidak memiliki apa pun yang terkait dengan backupAgent? Akankah Android mencadangkan datanya secara otomatis?
pengembang android
1
jawaban yang benar ditemukan di sini: stackoverflow.com/a/13806946/878126 . tampaknya tidak ada hubungannya dengan backupAgent. Saya juga telah memperbarui pertanyaan saya untuk menunjukkan apa itu semua.
pengembang android
3

Ini adalah masalah privasi . Disarankan untuk melarang pengguna untuk membuat cadangan aplikasi jika mengandung data sensitif. Memiliki akses ke file cadangan (yaitu kapan android:allowBackup="true"), dimungkinkan untuk memodifikasi / membaca konten aplikasi bahkan pada perangkat yang tidak di-rooting.

Solusi - gunakan android:allowBackup="false"dalam file manifes.

Anda dapat membaca posting ini untuk mendapatkan informasi lebih lanjut: Meretas Aplikasi Android Menggunakan Teknik Cadangan

Ayaz Alifov
sumber
1
apakah Anda serius dengan jawaban ini di tahun 2017? silakan baca di sini developer.android.com/guide/topics/data/…
batmaci
Anda dapat menonaktifkan cadangan dengan mengatur android: allowBackup ke false. Anda mungkin ingin melakukan ini jika aplikasi Anda dapat membuat ulang kondisinya melalui beberapa mekanisme lain atau jika aplikasi Anda berhubungan dengan informasi sensitif yang seharusnya tidak didukung oleh Android.
Edgar Khimich
Saat ini Anda dapat mengecualikan data sensitif dari cadangan melalui attribs dalam manifes.
Yousha Aleayoub