Was ist "android: allowBackup"?

267

Seit der neuen ADT-Vorschau-Version (Version 21) gibt es eine neue Flusenwarnung, die mich über das nächste Element in der Manifestdatei (im Anwendungs-Tag) informiert:

Sollte android explizit setzen: allowBackup auf true oder false (standardmäßig true, und dies kann einige Auswirkungen auf die Sicherheit der Anwendungsdaten haben)

Auf der offiziellen Website haben sie geschrieben:

Einige neue Überprüfungen: Sie müssen explizit entscheiden, ob Ihre App Sicherungen zulässt, und eine Etikettenprüfung. Es gibt ein neues Befehlszeilenflag zum Festlegen des Bibliothekspfads. Viele Verbesserungen an der inkrementellen Flusenanalyse während der Bearbeitung.

Was ist diese Warnung? Was ist die Sicherungsfunktion und wie verwende ich sie?

Warum sagt mir die Warnung auch, dass sie Auswirkungen auf die Sicherheit hat? Was sind die Nachteile und Vorteile der Deaktivierung dieser Funktion?


Es gibt zwei Konzepte für die Sicherung des Manifests:

  • "android: allowBackup " ermöglicht das Sichern und Wiederherstellen über adb, wie hier gezeigt :

Gibt an, ob die Anwendung an der Sicherungs- und Wiederherstellungsinfrastruktur teilnehmen darf. Wenn dieses Attribut auf false gesetzt ist, wird niemals eine Sicherung oder Wiederherstellung der Anwendung durchgeführt, selbst bei einer vollständigen Systemsicherung, bei der andernfalls alle Anwendungsdaten über adb gespeichert würden. Der Standardwert dieses Attributs ist true.

Dies wird als Sicherheitsproblem angesehen, da Benutzer Ihre App über ADB sichern und dann private Daten Ihrer App auf ihren PC übertragen können.

Ich denke jedoch, dass dies kein Problem ist, da die meisten Benutzer nicht wissen, was ADB ist, und wenn sie dies tun, wissen sie auch, wie sie das Gerät rooten. ADB-Funktionen funktionieren nur, wenn auf dem Gerät die Debugging-Funktion aktiviert ist und der Benutzer sie aktivieren muss.

Daher sind nur Benutzer betroffen, die ihre Geräte an den PC anschließen und die Debugging-Funktion aktivieren. Wenn sich auf ihrem PC eine bösartige App befindet, die die ADB-Tools verwendet, kann dies problematisch sein, da die App die privaten Speicherdaten lesen kann.

Ich denke, Google sollte nur eine Funktion hinzufügen, die standardmäßig in der Entwicklerkategorie deaktiviert ist, um das Sichern und Wiederherstellen von Apps über ADB zu ermöglichen.

  • "android: backupAgent " ermöglicht die Verwendung der Sicherungs- und Wiederherstellungsfunktion der Cloud, wie hier und hier gezeigt :

Der Name der Klasse, die den Sicherungsagenten der Anwendung implementiert, eine Unterklasse von BackupAgent. Der Attributwert sollte ein vollständig qualifizierter Klassenname sein (z. B. "com.example.project.MyBackupAgent"). Wenn das erste Zeichen des Namens jedoch ein Punkt ist (z. B. ".MyBackupAgent"), wird es als Kurzform an den im Element angegebenen Paketnamen angehängt. Es gibt keine Standardeinstellung. Der Name muss angegeben werden.

Dies ist kein Sicherheitsproblem.

Android-Entwickler
quelle
Ich denke, Sie sollten diese zusätzlichen Informationen in Ihrer Bearbeitung entfernen, da sich dies auf den Backup-Cloud-Dienst bezieht, anstatt auf das ADB-Backup-Tool, auf das sich dieses Problem tatsächlich bezieht (gemäß der Antwort von Tor Norbye)
Tony Chan
@ Turbo ja du bist richtig. Ich denke, es wurde nicht so oft aktualisiert, als ich es gelesen habe, aber jetzt ist es klar. Ich werde die Frage aktualisieren. Vielen Dank. Ich frage mich, ob die ADB-Backup-Funktion auf gerooteten Geräten auch für Apps verwendet werden kann, die sie auf false gesetzt haben.
Android-Entwickler
2
@IgorGanapolsky, also bin ich gerade total verwirrt. Warum haben sie es in 2 völlig verschiedenen Funktionen erwähnt? Ist es möglich, dass dasselbe Flag für beide Funktionen verantwortlich ist? oder ist es vielleicht ein fehler? Denkst du, ich sollte die Antwort, die ich angekreuzt habe, deaktivieren?
Android-Entwickler
1
@androiddeveloper Der Grund dafür, dass für beide Funktionen dasselbe genaue Attribut vorhanden ist, liegt wahrscheinlich darin, dass es für denselben Endzweck bestimmt ist: das Sichern von Daten. Ob auf dem Gerät oder in der Cloud ...
IgorGanapolsky
3
Als Android- Benutzer möchte ich jeden abwägen, der dies findet, und sagen, dass ich Apps nicht ausstehen kann - und es gibt viele -, die das Backup deaktivieren. Wenn eine Person Zugriff auf ein entsperrtes Telefon hat, sollte sie in der Lage sein, Daten davon zu kopieren. Jede "Sicherheitsmaßnahme" zu diesem Zeitpunkt ist bedeutungslos, da sie das Telefon immer rooten könnten, um die Daten abzurufen. Als Benutzer ist es jedoch äußerst wertvoll, meine App-Daten sichern zu können (ohne mein Knox-Bit zu rooten und auszulösen). Es ist wirklich frustrierend, dass so viele Apps dies nicht zulassen, und ehrlich gesagt, dass Android diesen Schalter überhaupt hat.
Nathan Stretch

Antworten:

139

Beachten Sie für diese Flusenwarnung wie für alle anderen Flusenwarnungen, dass Sie eine ausführlichere Erklärung erhalten können als nur das, was in der einzeiligen Fehlermeldung steht. Sie müssen nicht im Internet nach weiteren Informationen suchen.

Wenn Sie Flusen über Eclipse verwenden, öffnen Sie entweder die Ansicht für Flusenwarnungen, in der Sie den Flusenfehler auswählen und eine längere Erklärung anzeigen können, oder rufen Sie die Schnellkorrektur (Strg-1) in der Fehlerzeile auf. Einer der Vorschläge lautet " Erklären Sie dieses Problem ", das auch eine ausführlichere Erklärung enthält. Wenn Sie Eclipse nicht verwenden, können Sie aus lint ( lint --html <filename>) einen HTML-Bericht erstellen , der neben den Warnungen vollständige Erklärungen enthält, oder Sie können lint bitten, ein bestimmtes Problem zu erläutern. Das betreffende Problem allowBackuphat beispielsweise die ID AllowBackup(am Ende der Fehlermeldung angezeigt). Die ausführlichere Erklärung lautet daher:

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

Priority: 3 / 10
Severity: Warning
Category: Security

Das allowBackupAttribut bestimmt, ob die Daten einer Anwendung gesichert und wiederhergestellt werden können, wie hier dokumentiert .

Standardmäßig ist dieses Flag auf gesetzt true. Wenn dieses Flag auf gesetzt ist, truekönnen Anwendungsdaten vom Benutzer mit adb backupund gesichert und wiederhergestellt werden adb restore.

Dies kann Sicherheitsfolgen für eine Anwendung haben. adb backupErmöglicht Benutzern, die das USB-Debugging aktiviert haben, das Kopieren von Anwendungsdaten vom Gerät. Nach dem Sichern können alle Anwendungsdaten vom Benutzer gelesen werden. adb restoreErmöglicht die Erstellung von Anwendungsdaten aus einer vom Benutzer angegebenen Quelle. Nach einer Wiederherstellung sollten Anwendungen nicht davon ausgehen, dass die Daten, Dateiberechtigungen und Verzeichnisberechtigungen von der Anwendung selbst erstellt wurden.

Durch das Festlegen wird allowBackup="false"eine Anwendung sowohl aus der Sicherung als auch aus der Wiederherstellung entfernt.

Um diese Warnung zu beheben, entscheiden Sie, ob Ihre Anwendung die Sicherung unterstützen und explizit festlegen soll android:allowBackup=(true|false)

Klicken Sie hier für weitere Informationen

Tor Norbye
quelle
35
Benutzer wissen normalerweise nicht einmal, was adb ist, und wenn ja, wissen sie wahrscheinlich, wie sie ihr Gerät rooten und die Daten trotzdem selbst abrufen können, nein?
Android-Entwickler
1
@Tor Wenn Sie "Anwendungsdaten vom Gerät kopieren" sagen, meinen Sie das Kopieren von Daten / Daten / com.myapp oder von SD-Karte? Das vorherige Verzeichnis ist geschützt und kann nur gelesen werden, wenn das Gerät gerootet ist.
IgorGanapolsky
2
Zur Verdeutlichung ist dieses Backup, auf das Lint verweist, das ADB-Tool und nicht der Cloud-Backup-Service. Richtig? Viele der anderen Antworten scheinen so verwirrt zu sein.
Tony Chan
1
@IgorGanapolsky Ich denke, dass die Verwendung von ADB die privaten Daten kopiert, und deshalb gibt es eine Warnung. Ich denke, nur Leute, die die Debugging-Funktion aktiviert haben und ihr Gerät mit dem PC verbinden, sind betroffen. Solche Leute sind normalerweise Power-User oder Entwickler, daher sollten sie wissen, was sie tun. Das Sicherheitsrisiko besteht für Personen, die dies versehentlich getan und eine schädliche App auf dem PC installiert haben, die das ADB-Tool verwendet, um diese Vorgänge auszuführen. Es gibt eine App für Backup & Restore ohne Root namens "Helium": play.google.com/store/apps/…
Android-Entwickler
"Wenn Sie Flusen über Eclipse verwenden ..." sollten Sie wahrscheinlich auf AndroidStudio migrieren, da das ADT-Plugin veraltet ist.
wirft_exceptions_at_you
26

Folgendes bedeutet Backup in diesem Sinne wirklich:

Mit dem Sicherungsdienst von Android können Sie Ihre persistenten Anwendungsdaten in den Remote-Cloud-Speicher kopieren, um einen Wiederherstellungspunkt für die Anwendungsdaten und -einstellungen bereitzustellen. Wenn ein Benutzer einen Werksreset durchführt oder auf ein neues Android-Gerät konvertiert, stellt das System Ihre Sicherungsdaten automatisch wieder her, wenn die Anwendung erneut installiert wird. Auf diese Weise müssen Ihre Benutzer ihre vorherigen Daten oder Anwendungseinstellungen nicht reproduzieren.

~ Entnommen aus http://developer.android.com/guide/topics/data/backup.html

Sie können sich hier als Entwickler für diesen Sicherungsdienst registrieren: https://developer.android.com/google/backup/signup.html

Die Datentypen, die gesichert werden können, sind Dateien, Datenbanken, sharedPreferences, Cache und lib. Diese werden im Allgemeinen im Verzeichnis /data/data/[com.myapp] Ihres Geräts gespeichert, das lesegeschützt ist und auf das nur zugegriffen werden kann, wenn Sie über Root-Rechte verfügen.

UPDATE : Sie können dieses Flag im API-Dokument von BackupManager sehen : BackupManager

IgorGanapolsky
quelle
4
Ich denke, die Änderungen in API Level 23 deuten darauf hin, dass dies die richtige Antwort ist. Hier sind die Trainingsdokumente für die Änderungen: developer.android.com/training/backup/autosyncapi.html
pumpkinpie65
8

Dies wird nicht explizit erwähnt, aber basierend auf den folgenden Dokumenten wird meiner Meinung nach impliziert, dass eine App einen BackupAgent deklarieren und implementieren muss, damit die Datensicherung funktioniert, selbst wenn allowBackup auf true gesetzt ist (was das ist) Standardwert).

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 / topic / data / backup.html

Yuntao
quelle
Was ist, wenn die App nichts mit dem backupAgent zu tun hat? Wird Android seine Daten trotzdem automatisch sichern?
Android-Entwickler
1
Die richtige Antwort finden Sie hier: stackoverflow.com/a/13806946/878126 . es scheint, dass es nichts mit dem backupAgent zu tun hat. Ich habe auch meine Frage aktualisiert, um zu zeigen, worum es geht.
Android-Entwickler
3

Es ist Datenschutzbedenken . Es wird empfohlen, Benutzern das Sichern einer App zu untersagen, wenn diese vertrauliche Daten enthält. Durch den Zugriff auf Sicherungsdateien (dh wann android:allowBackup="true") ist es möglich, den Inhalt einer App auch auf einem nicht gerooteten Gerät zu ändern / zu lesen.

Lösung - Verwendung android:allowBackup="false"in der Manifestdatei.

In diesem Beitrag finden Sie weitere Informationen: Hacken von Android-Apps mithilfe von Sicherungstechniken

Ayaz Alifov
quelle
1
Ist das mit dieser Antwort im Jahr 2017 ernst? Bitte lesen Sie es hier developer.android.com/guide/topics/data/…
batmaci
Sie können Backups deaktivieren, indem Sie android: allowBackup auf false setzen. Möglicherweise möchten Sie dies tun, wenn Ihre App ihren Status über einen anderen Mechanismus wiederherstellen kann oder wenn Ihre App vertrauliche Informationen verarbeitet, die Android nicht sichern sollte.
Edgar Khimich
Derzeit können Sie vertrauliche Daten über Attribute im Manifest von Sicherungen ausschließen.
Yousha Aleayoub