Ich frage mich über die Sicherheit gemeinsamer Einstellungen.
Ist es möglich, auf gemeinsam genutzte Einstellungen zuzugreifen, selbst wenn diese in MODE_PRIV (0) erstellt wurden?
Ist es möglich, alle verfügbaren freigegebenen Einstellungen aufzulisten und dann alle Einstellungen von anderen Apps abzurufen?
Sind gemeinsam genutzte Einstellungen ein guter Ort, um vertrauliche Daten wie Kennwörter oder Authentifizierungstoken abzulegen?
Vielen Dank
android
security
sharedpreferences
Marek Sebera
quelle
quelle
Antworten:
Freigegebene Einstellungen werden als Datei im Dateisystem auf dem Gerät gespeichert. Sie werden standardmäßig im Datenverzeichnis der App mit festgelegten Dateisystemberechtigungen gespeichert, mit denen nur die UID, mit der die jeweilige Anwendung ausgeführt wird, auf sie zugreifen kann. Sie sind insofern privat, als Linux-Dateiberechtigungen den Zugriff auf sie einschränken, genau wie auf jedem Linux / Unix-System.
Jeder, der Zugriff auf das Gerät auf Root-Ebene hat, kann sie sehen, da Root Zugriff auf alles im Dateisystem hat. Außerdem kann jede Anwendung, die mit derselben UID wie die erstellende App ausgeführt wird, auf sie zugreifen (dies wird normalerweise nicht durchgeführt, und Sie müssen bestimmte Maßnahmen ergreifen, damit zwei Apps mit derselben UID ausgeführt werden. Dies ist also wahrscheinlich keine große Anwendung Besorgnis, Sorge). Wenn jemand das Dateisystem Ihres Geräts ohne Verwendung des installierten Android-Betriebssystems bereitstellen konnte, konnte er auch die Berechtigungen umgehen, die den Zugriff einschränken.
Wenn Sie über einen solchen Zugriff auf Ihre Einstellungen (oder auf von Ihrer Anwendung geschriebene Daten) besorgt sind, sollten Sie diese verschlüsseln. Wenn Sie so besorgt über sie sind, müssen Sie genau herausfinden, wie viel Schutz für das Risiko erforderlich ist, das Sie sehen. Es gibt eine sehr ausführliche Diskussion darüber in Application Security für die Android-Plattform , die gerade im Dezember 2011 veröffentlicht wurde (Haftungsausschluss: Ich bin der Autor dieses Buches).
quelle
SharedPreferences sind nichts anderes als XML-Dateien in Ihren Telefonen / Daten / Daten / Ordnern. Daher kann jede Anwendung oder jeder Benutzer mit Superuser-Berechtigungen auf einem gerooteten Gerät auf Ihre SharedPreferences zugreifen, selbst wenn sie mit MODE_PRIV erstellt wurden
Trotzdem gibt es eine Möglichkeit, es vor allen zu schützen ... Bitte überprüfen Sie diesen Link. Hier können Sie Daten in Pref mit Verschlüsselung speichern, die Klasse ist selbsterklärend und sehr einfach zu bedienen.
https://github.com/sveinungkb/encrypted-userprefs
Wie von anderen gesagt, kann jeder darauf zugreifen, aber in diesem Fall kann niemand Daten darin lesen, während sie verschlüsselt sind. So seine secure.For Utmost Sicherheit wird mein Vorschlag, den Schlüssel für die Verschlüsselung während der Laufzeit nicht schwer , es Codierung verwendet zu erzeugen. Dafür gibt es viele Möglichkeiten :)
quelle
SharedPref
. Aber was tun mit dem anderen Schlüssel? Im Ernst, das beste Szenario wäre das Senden des verschlüsselten Schlüssels und einer Geräte-UID an einen Server unter Verwendung von SSL, um dort gespeichert und nach Bedarf abgerufen zu werden. Dies würde Konnektivität erfordern, aber es würde Ihnen ermöglichen, ein Gerät auf die schwarze Liste zu setzen und plötzlich alle Daten in den Papierkorb zu werfen. Ohne ständige Internetverbindung ist jeder Versuch, Daten zu verschlüsseln, nicht 100% sicher.Normalerweise nein, sie können nicht von anderen Anwendungen zugegriffen werden kann, sollten Sie jedoch beachten , dass SharedPreferences als XML - Dateien in der gespeicherten
/data/data/
Verzeichnis, das im Wesentlichen bedeutet , dass jede Anwendung mit Superuser - Rechten auf einem verwurzelten Gerät kann Ihr Zugriff aufSharedPreference
s, auch wenn sie hergestellt mitMODE_PRIV
quelle
Ist es möglich, auf gemeinsam genutzte Einstellungen zuzugreifen, selbst wenn diese in MODE_PRIV (0) erstellt wurden?
Nach Code-Nr. Sie können jedoch eine Anwendungsdatei abrufen, wenn Sie über Superbenutzerrechte verfügen.
Ist es möglich, alle verfügbaren freigegebenen Einstellungen aufzulisten und dann alle Einstellungen von anderen Apps abzurufen?
Wenn Sie ein Superuser (gerootete Geräte) sind, können Sie alle privaten Dateien der App abrufen.
Sind gemeinsam genutzte Einstellungen ein guter Ort, um vertrauliche Daten wie Kennwörter oder Authentifizierungstoken abzulegen?
Nein, es kann leicht gehackt werden. Wenn Sie vertrauliche Daten in eine gemeinsam genutzte Präferenzdatei einfügen möchten, können Sie die Daten verschlüsseln und speichern. Sie können Ihren Verschlüsselungsschlüssel in NDK / Server speichern.
quelle