「android:allowBackup」とは何ですか?


267

以来新しいADTプレビュー版(バージョン21) 、彼らは私に(アプリケーションタグで)マニフェストファイルに次の事を伝え、新たな糸くずの警告があります。

android:allowBackupを明示的にtrueまたはfalseに設定する必要があります(デフォルトではtrueであり、アプリケーションのデータにセキュリティ上の影響がある可能性があります)

では、公式ウェブサイト、彼らが書きました:

いくつかの新しいチェック:アプリがバックアップを許可するかどうか、およびラベルチェックを明示的に決定する必要があります。ライブラリパスを設定するための新しいコマンドラインフラグがあります。編集中の増分lint分析に対する多くの改善。

この警告は何ですか?バックアップ機能とは何ですか?どのように使用しますか?

また、警告がセキュリティに影響することを警告するのはなぜですか?この機能を無効にすることの欠点と利点は何ですか?


マニフェストのバックアップには2つの概念があります。

  • 「android:allowBackup」は、次に示すように、adbを介してバックアップと復元を許可します

アプリケーションがバックアップおよび復元インフラストラクチャに参加できるようにするかどうか。この属性がfalseに設定されている場合、アプリケーションのバックアップまたは復元は、すべてのアプリケーションデータがadb経由で保存されるシステム全体のバックアップによっても実行されません。この属性のデフォルト値はtrueです。

これは、ADBを介してアプリをバックアップし、アプリのプライベートデータをPCに取り込むことができるため、セキュリティの問題と見なされます。

ただし、ほとんどのユーザーはadbが何であるかを知らないため、問題ではないと思います。知っていれば、デバイスのルート権限を取得する方法も知っています。ADB機能は、デバイスでデバッグ機能が有効になっている場合にのみ機能します。これには、ユーザーがそれを有効にする必要があります。

したがって、デバイスをPCに接続してデバッグ機能を有効にするユーザーのみが影響を受けます。PCにADBツールを使用する悪意のあるアプリがある場合、アプリがプライベートストレージデータを読み取る可能性があるため、これは問題となる可能性があります。

Googleは、ADBを介したアプリのバックアップと復元を許可するために、デフォルトで無効になっている機能を開発者カテゴリに追加するだけでよいと思います。

  • 「android:backupAgent」は、ここここに示さいるように、クラウドのバックアップと復元機能の使用を許可します。

実装するクラスの名前は、アプリケーションのバックアップエージェントであり、BackupAgentのサブクラスです。属性値は完全修飾クラス名( "com.example.project.MyBackupAgent"など)である必要があります。ただし、省略形として、名前の最初の文字がピリオド(たとえば、「。MyBackupAgent」)の場合、要素で指定されたパッケージ名に追加されます。デフォルトはありません。名前を指定する必要があります。

これはセキュリティの問題ではありません。


この問題が実際に参照しているADBバックアップツールではなく、バックアップクラウドサービスを参照しているため、編集でその追加情報を削除する必要があると思います(Tor Norbyeの回答に従って)
Tony Chan

@ターボはいあなたは正しいです。読んだときはそれほど更新されていなかったと思うが、今ははっきりしている。質問を更新します。ありがとう。ルートに設定されたデバイスでadbバックアップ機能をfalseに設定しているアプリでも使用できるかどうか疑問に思います。
android開発者

2
@IgorGanapolskyなので、今は完全に混乱しています。なぜ2つのまったく異なる機能で言及したのですか?同じフラグが両方の機能を担当している可能性はありますか?それとも間違いですか?私がチェックした答えのチェックを外す必要があると思いますか?
android開発者

1
@androiddeveloper両方の機能にまったく同じ属性が存在する理由は、おそらく同じ究極の目的であるデータのバックアップが意図されているためです。デバイス上でもクラウド内でも...
IgorGanapolsky

3
私はAndroid ユーザーとして、これを見つけた人を比較検討したいと思います。また、バックアップを無効にするアプリは我慢できないと言っています。ロックされていない電話にアクセスできる人は、その電話からデータをコピーできるはずです。データを取得するために常に電話を根絶する可能性があるため、その時点での「セキュリティ」対策は無意味です。しかし、ユーザーとして、(Knoxビットをルート化したりトリップしたりせずに)アプリデータをバックアップできることは非常に貴重です。非常に多くのアプリで許可されていないことは本当にイライラします。正直なところ、Androidにもこのスイッチが付いています。
Nathan Stretch

回答:


139

このlintの警告については、他のすべてのlintの警告と同様に、1行のエラーメッセージの内容よりも詳しい説明が得られることに注意してください。詳細をウェブで検索する必要はありません。

Eclipse経由でlintを使用している場合は、lintの警告ビューを開いて、lintエラーを選択して詳細な説明を表示するか、エラー行でクイックフィックス(Ctrl-1)を呼び出します。この問題を説明してください」と表示され、詳細な説明が表示されます。Eclipseを使用していない場合は、lint(lint --html <filename>)からHTMLレポートを生成して、警告の横に完全な説明を含めるか、lintに特定の問題の説明を依頼できます。たとえば、関連する問題にallowBackupはID 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 backupadb restore

これは、アプリケーションにセキュリティ上の影響を与える可能性があります。adb backupUSBデバッグを有効にしたユーザーは、デバイスからアプリケーションデータをコピーできます。バックアップすると、すべてのアプリケーションデータをユーザーが読み取ることができます。adb restoreユーザーが指定したソースからアプリケーションデータを作成できます。復元後、アプリケーションは、データ、ファイルのアクセス許可、およびディレクトリのアクセス許可がアプリケーション自体によって作成されたと想定しないでください。

設定allowBackup="false"すると、アプリケーションがバックアップと復元の両方からオプトアウトされます。

この警告を修正するには、アプリケーションがバックアップをサポートし、明示的に設定する必要があるかどうかを決定します android:allowBackup=(true|false)

こちらをクリック詳しい情報


35
ユーザーは通常adbが何であるかさえ知らないので、知っていれば、デバイスをルート化してデータを取得する方法を知っているでしょう。
Android開発者

1
@Tor「アプリケーションデータをデバイスからコピーする」とは、data / data / com.myappまたはsdcardからコピーするという意味ですか?以前のディレクトリは保護されており、デバイスがルート化されていないと読み取ることができません。
IgorGanapolsky 2013

2
ですから、Lintが参照しているこのバックアップはADBツールであり、クラウドバックアップサービスではありません。他の多くの答えが混乱しているようです。
Tony Chan

1
@IgorGanapolsky ADBを使用するとプライベートデータがコピーされると思います。そのため、警告が表示されます。デバッグ機能が有効になっていて、デバイスをPCに接続している人だけが影響を受けると思います。そのような人々は通常パワーユーザーまたは開発者なので、彼らは彼らが何をしているのかを知っているべきです。セキュリティリスクは、誤ってそれを行い、ADBツールを使用してそれらの操作を実行するPCに悪意のあるアプリをインストールした人々のためのものです。ルートなしのバックアップと復元用のアプリ「Helium」があります。play.google.com
android developer

「Eclipse経由でlintを使用している場合」ADTプラグインは非推奨であるため、おそらくAndroidStudioに移行する必要があります。
throws_exceptions_at_you

26

これは、この意味でのバックアップが実際に意味するものです。

Androidのバックアップサービスでは、アプリケーションデータと設定の復元ポイントを提供するために、永続的なアプリケーションデータをリモートの「クラウド」ストレージにコピーできます。ユーザーが出荷時設定にリセットしたり、Android搭載の新しいデバイスに変換したりすると、アプリケーションが再インストールされるときに、システムは自動的にバックアップデータを復元します。これにより、ユーザーは以前のデータやアプリケーション設定を再現する必要がなくなります。

〜http //developer.android.com/guide/topics/data/backup.htmlから取得

このバックアップサービスには、https//developer.android.com/google/backup/signup.htmlで開発者として登録でき ます。

バックアップできるデータのタイプは、ファイル、データベース、sharedPreferences、キャッシュ、およびlibです。これらは通常、デバイスの/data/data/[com.myapp]ディレクトリに保存されます。このディレクトリは読み取り保護されており、root権限がないとアクセスできません。

更新:このフラグは、BackupManagerのapi doc:BackupManagerにリストされています。


4
APIレベル23の変更は、これが正解であることを示していると思います。変更に関するトレーニングドキュメントは次のとおりです
。developer.android.com

8

これは明示的には言及されていませんが、次のドキュメントに基づいて、データのバックアップが機能するためには、allowBackupがtrueに設定されている場合でも(アプリがデフォルト値)。

http://developer.android.com/reference/android/R.attr.html#allowBackup http://developer.android.com/reference/android/app/backup/BackupManager.html http://developer.android。 com / guide / topics / data / backup.html


アプリにbackupAgentに関連するものがない場合はどうなりますか?それでもアンドロイドはデータを自動的にバックアップしますか?
Android開発者

1
正解はこちら:stackoverflow.com/a/13806946/878126にあります。backupAgentとは関係がないようです。また、質問の内容を示すために質問を更新しました。
Android開発者

3

それはプライバシーの懸念。アプリに機密データが含まれている場合は、ユーザーがアプリをバックアップできないようにすることをお勧めします。バックアップファイルにアクセスできる場合(つまり、の場合android:allowBackup="true")、ルート権限を取得していないデバイスでも、アプリのコンテンツを変更/読み取ることができます。

解決策- android:allowBackup="false"マニフェストファイルで使用します。

詳細については、この投稿をご覧ください: バックアップ手法を使用したAndroidアプリのハッキング


1
2017年にこの答えを真剣に考えていますか?ここでそれを読んでくださいdeveloper.android.com/guide/topics/data/...
batmaci

android:allowBackupをfalseに設定すると、バックアップを無効にできます。アプリが他のメカニズムを使用して状態を再現できる場合や、アプリがAndroidがバックアップしてはならない機密情報を扱う場合は、これを行うことができます。
Edgar Khimich

現在、マニフェストの属性を使用して、バックアップから機密データを除外できます。
Yousha Aleayoub
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.