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?

  • Wie programmgesteuert ein Bluetooth-Gerät auf Android zu koppeln
  • Photoshop-Design von px bis dp
  • Wenn Sie stateListAnimator in RecylerViews Element anwenden, wird beim Aufruf von notifyDataSetChanged ein flackernder Effekt verursacht
  • Wie man Millisekunden bis heute in SQLite konvertiert
  • Zugriff auf Umgebungsvariablen von Android Studio gradle build
  • Ändern Sie den Spinnerstil in der Symbolleiste
  • Android serialisierbares Problem
  • CursorAdapter gesichert ListView löschen Animation "flackert" beim Löschen
  • Wie kann man RecyclerView mit mehreren Ansichtstypen erstellen?
  • Android SeekBar Touch Sensitivity
  • Erkennung, wenn spezifizierte URL ein Bild in Android ist?
  • So implementiere die Skalierung der Animation auf dem gemeinsamen Element beim Aktivitätsübergang
  • 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.