287

新しい ADT プレビュー バージョン (バージョン 21)以降、マニフェスト ファイル (アプリケーション タグ内) に次のことを知らせる新しい lint 警告があります。

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」など) の場合、要素で指定されたパッケージ名に追加されます。デフォルトはありません。名前を指定する必要があります。

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

4

4 に答える 4

151

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

Eclipse 経由で lint を使用している場合は、lint エラーを選択して詳細な説明を表示できる lint 警告ビューを開くか、エラー行でクイック フィックス (Ctrl-1) を呼び出します。提案の 1 つは "この問題について説明してください」というメッセージが表示され、さらに詳しい説明がポップアップ表示されます。Eclipse を使用していない場合はlint --html <filename>、警告の横に完全な説明を含む HTML レポートを lint ( ) から生成するか、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)

詳細については、ここをクリックしてください

于 2012-12-10T18:28:06.567 に答える
31

この意味でのバックアップの実際の意味は次のとおりです。

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 ドキュメントに一覧表示されています: BackupManager

于 2013-04-01T13:49:50.870 に答える
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

于 2012-11-17T00:02:36.000 に答える