Schutz von zusätzlichen Daten in Android Intent

Ich benutze eine Absicht, um eine neue Aktivität in einer neuen Aufgabe zu starten. Diese Absicht trägt einige private Daten, die diese Aktivität in ihren Extras benötigt. Diese Daten sollten nicht durch andere Anwendungen lesbar sein. Wir haben untersucht, ob diese Daten tatsächlich nicht ausgelaufen sind. Wir haben herausgefunden, dass durch die Verwendung von RecentTaskInfo von getRecentTasks () diese zusätzlichen Daten von einer beliebigen Anwendung mit GET_TASK-Berechtigung gelesen werden können. Das ist nicht sehr sicher. Wir haben aufgehört zu suchen, sobald wir dieses Leck gefunden haben. Gibt es mehr weise diese Daten ausgelaufen sind? Und wie kann ich sicherstellen, dass die Daten im Extra nicht von anderen Anwendungen lesbar sind?

  • Aktionsleiste onClick listener für die Home-Taste
  • Senden von Absicht an BroadcastReceiver von adb
  • Absichtsfilter mit Pfad, pathPrefix oder pathPattern
  • APKs programmgesteuert installieren / deinstallieren (PackageManager vs Intents)
  • Nested Parcelling: RuntimeException - Unmarshalling unbekannter Typcode 3211319 bei Offset 440
  • Android KitKat 4.4 Hangouts können nicht mit dem Senden von SMS-Absicht umgehen
  • Otto vs LocalBroadcast:
  • Beginn der Absicht von onclicklistener
  • 3 Solutions collect form web for “Schutz von zusätzlichen Daten in Android Intent”

    Ausgehend von Android 4.1.1 wurde eine zusätzliche Berechtigung hinzugefügt, um zu verhindern, dass Extra von Drittanbieter-Apps mit dem RecentTaskInfo . Diese Berechtigung ( android.Manifest.permission.GET_DETAILED_TASKS ) kann nur vom System android.Manifest.permission.GET_DETAILED_TASKS werden. Ohne diese Erlaubnis wird das extra's ausgetauscht, bevor das baseIntent über das RecentTaskInfo .

    Aus dem Kommentar des Commit http://androidxref.com/4.2.2_r1/history/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java#8238e717df4bc5eebf15f97172d68af3599a95bb :

    Fügen Sie neue Berechtigungen zur Genehmigung auf Signaturebene hinzu, um Details zu den Aufgaben zu erhalten.

    Drittanbieter-Apps können jetzt keinen Zugang zu den Extras der mit Aufgaben verbundenen Intentionen erhalten, um private Daten in ihnen aus dem Auslaufen zu halten.

    Änderungs-ID: I95af9e181ac42557bc8b981807e7ddd266a88d0e

    So scheint es, dass Anstrengungen in die Absicht investiert werden, ist extra sicherer, um sensible Informationen zu transportieren. Ich weiß nicht, ob es andere Möglichkeiten gibt, in denen diese extra lecken können, aber zumindest die extra scheinen OK von JB oben.

    Diese Absicht trägt einige private Daten, die diese Aktivität in ihren Extras benötigt

    Warum? Pass Identifikatoren zu privaten Daten in Extras, wo die Behebung dieser Identifikatoren in diese private Daten (zB Datenbank-Abfrage) kann nur durch die Aktivität durchgeführt werden.

    Wir haben herausgefunden, dass durch die Verwendung von RecentTaskInfo von getRecentTasks () diese zusätzlichen Daten von einer beliebigen Anwendung mit GET_TASK-Berechtigung gelesen werden können

    Ja, ich habe vor fast zwei Jahren darüber gesprochen, und sonst haben wir das schon früher gemacht.

    Gibt es mehr weise diese Daten ausgelaufen sind?

    Alle Anfragen, um andere Komponenten zu starten, gehen über einen OS-Prozess, und so werden die Daten ständig auf das Betriebssystem "ausgelaufen".

    Und je nachdem, was du mit der Intent machst, kannst du es auf andere Weise Parcelable (zB eine Intent selbst als Parcelable an andere Apps weitergeben).

    Und wie kann ich sicherstellen, dass die Daten im Extra nicht von anderen Anwendungen lesbar sind?

    Sie können nicht. Wieder keine privaten Daten in Aktivitäts-Extras, sondern stattdessen Identifikatoren verwenden, die verwendet werden können, um diese privaten Daten zu erhalten.

    Sie haben einen privaten Speicherplatz, der nur von Ihrer Anwendung lesbar ist. Bei nicht verwurzelten Geräten werden die dort gespeicherten Informationen nur für Ihre App zugänglich sein.

    Sie können eine SharedPreference verwenden , um Ihre Daten zu speichern – die Daten werden in der angewiesenen privaten Speicherung Ihrer App gespeichert.

    Alternativ können Sie die private Lagerung direkt nutzen und beliebige Dateien wie folgt ausführen:

     FileOutputStream fos; try { fos = openFileOutput (FILENAME, Context.MODE_PRIVATE); fos.write (string.getBytes ()); fos.close (); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.