web-dev-qa-db-ja.com

"Android:allowBackup"とは何ですか?

新しいADTプレビューバージョン(バージョン21) なので、新しいlint警告が表示され、次のことがわかります。マニフェストファイル(applicationタグ内):

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

公式Webサイト では、彼らは次のように書いています。

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

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

また、警告がセキュリティ上の問題があることを教えてくれるのはなぜですか。この機能を無効にすることの欠点と利点は何ですか?


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

  • "Android:allowBackup"はadbを介したバックアップと復元を可能にします ここで

アプリケーションがバックアップに参加してインフラストラクチャを復元できるようにするかどうか。この属性をfalseに設定すると、他の方法ですべてのアプリケーションデータがadbを介して保存されることになるフルシステムバックアップであっても、アプリケーションのバックアップまたは復元は実行されません。この属性のデフォルト値はtrueです。

人々は ADB を介してあなたのアプリをバックアップしてからあなたのPCにあなたのアプリの個人データを取得することができるので、これはセキュリティ問題と考えられています。

しかし、私はそれが問題ではないと思います、なぜならほとんどのユーザーはadbが何であるかを知らない、そして彼らがそうするならば、彼らはまたどのようにデバイスを根付かせるかを知るでしょう。 ADB機能は、デバイスでデバッグ機能が有効になっている場合にのみ機能するため、ユーザーは有効にする必要があります。

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

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

  • "Android:backupAgent"は、表示されているように、クラウドのバックアップと復元機能を使用することを可能にします こちらこちら

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

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

234

このlint警告、および他のすべてのlint警告については、単一行のエラーメッセージに記載されているものよりも詳細な説明が表示されることに注意してください。あなたはより多くの情報のためにウェブを検索する必要はありません。

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属性は、アプリケーションのデータをバックアップおよび復元できるかどうかを決定します。それは文書化されています ここ

By default, this flag is set to true. When this flag is set to true,
application data can be backed up and restored by the user using adb backup
and adb restore.

This may have security consequences for an application. adb backup allows
users who have enabled USB debugging to copy application data off of the
device. Once backed up, all application data can be read by the user. adb
restore allows creation of application data from a source specified by the
user. Following a restore, applications should not assume that the data, file
permissions, and directory permissions were created by the application
itself.

Setting `allowBackup="false"` opts an application out of both backup and
restore.

To fix this warning, decide whether your application should support backup,
and explicitly set `Android:allowBackup=(true|false)`"

---ここをクリックして 詳細

129
Tor Norbye

この意味でのバックアップが本当に意味するものは次のとおりです。

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権限を持っていない限りアクセスできません。

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

22
IgorGanapolsky

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

http://developer.Android.com/reference/Android/R.attr.html#allowBackuphttp://developer.Android.com/reference/Android/app/backup/) BackupManager.htmlhttp://developer.Android.com/guide/topics/data/backup.html

8
Yuntao

いつAndroidを設定する必要がありますか:allowBackup = false

あなたはAndroidデバイスからPCにデータをバックアップするためにrootを必要としません、あなたはただ物理的なアクセスと開発者メニューのデバッグを可能にすることを必要とします。これにより、Facebookのアクセストークンのように、誰かに盗ませたくない機密情報が含まれている可能性がある、アプリの内部ストレージからデータをコピーできます。

ほとんどの場合、これはかなり簡単なことですが、物理的なアクセスが関与する攻撃に対してこの追加の保護層を必要とする場合があります。

これを回避するためにあなたは電話を根絶する必要があるであろうことに注意してください、その場合内部記憶装置の機密データは工場出荷時設定へのリセットが起こるとき拭かれるでしょう。

4
Xar E Ahmer

それはプライバシーの問題です。機密データが含まれている場合は、ユーザーにアプリのバックアップを許可しないことをお勧めします。バックアップファイルへのアクセス権を持っている場合(つまりAndroid:allowBackup="true"の場合)、root以外のデバイスでもアプリのコンテンツを変更/読み取ることが可能です。

解決策 - マニフェストファイルでAndroid:allowBackup="false"を使用してください。

あなたはより多くの情報を得るためにこの記事を読むことができます: バックアップ技術を使ってAndroidアプリをハッキングする

1
Ayaz Alifov