run - sonar lint android studio




O que é "android: allowBackup"? (4)

Desde a nova versão de pré-visualização do ADT (versão 21) , eles têm um novo aviso de lint que informa a próxima coisa no arquivo de manifesto (na tag do aplicativo):

Deve definir explicitamente android: allowBackup como true ou false (é true por padrão, e isso pode ter algumas implicações de segurança para os dados do aplicativo)

No site oficial , eles escreveram:

Algumas novas verificações: você deve decidir explicitamente se seu aplicativo permite backups e uma verificação de rótulo. Há um novo sinalizador de linha de comando para definir o caminho da biblioteca. Muitas melhorias na análise incremental de lint durante a edição.

O que é esse aviso? Qual é o recurso de backup e como usá-lo?

Além disso, por que o aviso me diz que tem implicações de segurança? Quais são as desvantagens e vantagens de desativar esse recurso?

Existem dois conceitos de backup para o manifesto:

  • "android: allowBackup " permite fazer backup e restaurar via adb, como mostrado here :

Seja para permitir que o aplicativo participe da infraestrutura de backup e restauração. Se esse atributo for definido como false, nenhum backup ou restauração do aplicativo nunca será executado, mesmo por um backup completo do sistema que faria com que todos os dados do aplicativo fossem salvos via adb. O valor padrão desse atributo é true.

Isso é considerado um problema de segurança porque as pessoas podem fazer backup do seu aplicativo via ADB e, em seguida, obter dados privados do seu aplicativo no PC.

No entanto, acho que não é um problema, já que a maioria dos usuários não sabe o que é o adb e, se o fizer, também saberá como fazer o root no dispositivo. As funções do ADB só funcionariam se o dispositivo tiver o recurso de depuração ativado e isso exigir que o usuário o habilite.

Assim, somente os usuários que conectam seus dispositivos ao PC e ativam o recurso de depuração seriam afetados. Se eles tiverem um aplicativo mal-intencionado no PC que use as ferramentas do ADB, isso pode ser problemático, pois o aplicativo pode ler os dados do armazenamento privado.

Acho que o Google deve apenas adicionar um recurso que está desativado por padrão, na categoria de desenvolvedor, para permitir backup e restauração de aplicativos via ADB.

  • "android: backupAgent " permite usar o recurso de backup e restauração da nuvem, como mostrado here e here :

O nome da classe que implementa o agente de backup do aplicativo, uma subclasse de BackupAgent. O valor do atributo deve ser um nome de classe totalmente qualificado (como "com.example.project.MyBackupAgent"). No entanto, como uma abreviação, se o primeiro caractere do nome for um ponto (por exemplo, ".MyBackupAgent"), ele será anexado ao nome do pacote especificado no elemento. Não há padrão. O nome deve ser especificado.

Este não é um problema de segurança.


É preocupação de privacidade . Recomenda-se que os usuários não façam backup de um aplicativo se ele contiver dados confidenciais. Tendo acesso a arquivos de backup (ou seja, quando android:allowBackup="true" ), é possível modificar / ler o conteúdo de um aplicativo, mesmo em um dispositivo não-root.

Solução - use android:allowBackup="false" no arquivo de manifesto.

Você pode ler esta postagem para obter mais informações: Como invadir aplicativos Android usando técnicas de backup


Aqui está o que backup neste sentido realmente significa:

O serviço de backup do Android permite que você copie os dados de aplicativos persistentes para o armazenamento "em nuvem" remoto, a fim de fornecer um ponto de restauração para os dados e configurações do aplicativo. Se um usuário executar uma redefinição de fábrica ou converter para um novo dispositivo com Android, o sistema restaurará automaticamente os dados de backup quando o aplicativo for reinstalado. Dessa forma, seus usuários não precisam reproduzir os dados ou configurações de aplicativos anteriores.

~ Retirado de http://developer.android.com/guide/topics/data/backup.html

Você pode se registrar para este serviço de backup como desenvolvedor aqui: https://developer.android.com/google/backup/signup.html

O tipo de dados que podem ser armazenados em backup são arquivos, bancos de dados, sharedPreferences, cache e lib. Eles geralmente são armazenados no diretório /data/data/[com.myapp] do seu dispositivo, que é protegido contra leitura e não pode ser acessado, a menos que você tenha privilégios de root.

ATUALIZAÇÃO : Você pode ver esse sinalizador listado no documento da API do BackupManager : BackupManager


Para este aviso de cotão, e para todos os outros avisos de cotão, observe que você pode obter uma explicação mais completa do que apenas o que está na mensagem de erro de uma linha; você não precisa pesquisar na web para obter mais informações.

Se você estiver usando lint via Eclipse, abra a visualização de avisos de lint, onde é possível selecionar o erro de lint e ver uma explicação mais longa, ou invocar a correção rápida (Ctrl-1) na linha de erro e uma das sugestões é "Explain esta questão ", que também irá aparecer uma explicação mais completa. Se você não estiver usando o Eclipse, poderá gerar um relatório HTML a partir do lint ( lint --html <filename> ), que inclui explicações completas ao lado dos avisos, ou pode solicitar que o lint explique um problema específico. Por exemplo, o problema relacionado ao allowBackup tem o id "AllowBackup" (mostrado no final da mensagem de erro), então a explicação mais completa é:

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

Priority: 3 / 10
Severity: Warning
Category: Security

O atributo allowBackup determina se os dados de um aplicativo podem ser submetidos a backup e restaurados. Está documentado here .

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)`"

Clique aqui para here


Quando devemos definir android: allowBackup = false

Você não precisa de root para fazer backup de dados de um dispositivo Android para um PC, você só precisa de acesso físico e para habilitar a depuração no menu do desenvolvedor. Isso permite que você copie dados do armazenamento interno do aplicativo, que pode conter informações confidenciais que você não quer que alguém roube, como o token de acesso do Facebook.

Eu concordo que é bastante trivial na maioria dos casos, mas há alguns casos que exigem essa camada extra de proteção contra ataques onde o acesso físico está envolvido.

Observe que, para contornar isso, você precisaria enraizar o telefone; nesse caso, os dados confidenciais no armazenamento interno seriam apagados quando a redefinição de fábrica ocorresse.







android-backup-service