[JAVA] Standardwert von Android: exportiert


Android Manifest Android: exportiert Es wird gesagt, dass, wenn nicht angegeben, nicht immer standardmäßig Android verwendet wird: exported = "false".

Fazit

Es ist sicherer, alle exportierten Attribute explizit anzugeben

Grund

Weil es möglicherweise unbeabsichtigt in einer externen Anwendung veröffentlicht wird

    1. Wenn die exportierte Aktivität nicht angegeben ist, wird wahr / falsch durch das Vorhandensein oder Fehlen der Absichtsfilterdefinition bestimmt. --Intent-Filter definiert: android: exported = "true" (veröffentlicht für externe Apps) --Intent-Filter nicht definiert: android: exported = "false" (privat für externe Apps)

Wenn Sie versehentlich einen Absichtsfilter definieren, ohne exportiert anzugeben, Die Aktivität kann auch über eine externe App gestartet werden. image.png

Darüber hinaus wird die implizite Absicht, die Aktivität zu aktivieren, auch von externen Apps empfangen. image.png

  1. Die Standardeinstellung des exportierten Anbieters verhält sich je nach Betriebssystemversion unterschiedlich.

Wenn Sie versehentlich exportiert angeben und minSdkVersion 17 oder weniger einschließen Öffentlich / privat ändert sich je nach Betriebssystemversion.

Ich denke nicht, dass es ein Problem ist, wenn ich AndroidManifest.xml nicht sehen kann. .. ..

Schauen Sie sich AndroidManifest.xml an, eine App bei Google Play.

  1. Installieren Sie die App, die Android Manifest anzeigen soll, auf Ihrem Android-Gerät

  2. Überprüfen Sie den Paketnamen der App von Google Play Sie können dies mit der URL der App-Seite überprüfen https://play.google.com/store/apps/details?id=【target package name】

  3. Überprüfen Sie den vollständigen Pfad mit dem Befehl adb

>adb shell pm list packages -f 【target package name】 package:/data/app/【target package name】-1/base.apk=【target package name】

  1. Ziehen Sie apk mit adb auf den PC

> adb pull /data/app/【target package name】-1

  1. Ändern Sie die Erweiterung von apk in zip image.pngimage.png

  2. Als Reißverschluss extrahieren

  3. Konvertieren Sie AndroidManifest.xml in Zip mit AXMLPrinter2.jar AXMLPrinter2.jar

>java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifestConverted.xml

  1. In dem anderen Element << activity > als android.intent.category.LAUNCHER nach der Konvertierung Suchen Sie nach Aktivitäten mit exported = "true" oder nach Aktivitäten, für die der Intent-Filter ohne Beschreibung von exported definiert ist. Ich bin der Meinung, dass es in Apps mit geringer Erfahrung und Bewertung leicht zu finden ist </ font>

  2. Versuchen Sie, von einer anderen App aus anzurufen

MainActivity.kt


        val targetPackageName : String = "【target package name】"
        val targetActivityName : String = "【target activity name】"

        val intent : Intent = Intent()
        intent.setClassName( targetPackageName, targetActivityName )
        startActivity( intent )

Auch hier möglich

adb am start -n 【target package name】/.【target activity name】

Dann beginnt die Aktivität normal Wenn angenommen wird, dass diese Aktivität nur von einem bestimmten Prozess desselben Pakets aufgerufen wird, kann
der erwartete Prozess übersprungen und ausgeführt werden.

Zusammenfassung

Das Wissen ist hier geschrieben [Secure Design / Secure Coding Guide für Android Apps] ](https://www.jssec.org/dl/android_securecoding.pdf) Tatsächlich ist es nicht realistisch, alles in einer Überprüfung zu überprüfen, und es ist realistisch, ein Tool zu verwenden, da es Auslassungen gibt. Wie viel Geld Sie für Sicherheit ausgeben können, hängt von der App ab, die Sie erstellen.

Recommended Posts

Standardwert von Android: exportiert
Standardwert für server.servlet.session.timeout
Build Spring für Android 2.0.0
[Android] Ursache und Abhilfe für TransactionTooLargeException
Standardwerte für MaxHeapSize und InitialHeapSize
Links zum Erstellen von Android-Apps (für Anfänger)
Erste Android-Entwicklung für vielbeschäftigte Menschen
Eine Sammlung von Bibliotheken, die für die Android-Entwicklung nützlich sind
[Android] Validierung für Datumseingabe erstellen!
Hinweise für Anfänger in der Android-Anwendungsentwicklung
[Android] Verfahren zur Unterstützung von Deep Links