android:exported의 기본값

AndroidManifest의 android:exported에 관하여
지정이 없으면 항상 디폴트로 android:exported="false"가 되는 것은 아니다는 이야기.

결론



exported 속성은, 명시적으로 모두 지정하는 편이 안전

이유



예기치 않게 외부 앱에 게시했을 가능성이 있기 때문에

1. Activity의 exported는 무지정의 경우,intent-filter의 정의의 유무에 의해 true/false가 정해진다.
- intent-filter 정의 있음: android:exported="true"(외부 앱에 공개)
- intent-filter 정의 없음: android:exported="false"(외부 앱에 비공개)

실수로 exported를 지정하지 않고 intent-filter를 정의하면,
그 activity는 외부 앱에서도 시작할 수 있습니다.


게다가, 그 activity를 기동하려고 던진 암묵적 인텐트는, 외부의 어플리도 받아들여져 버린다.


2. Provider의 exported의 디폴트는, OS버전으로 행동이 다르다.
- Android 4.2(API Level 17)까지는 기본적으로 true
- Android 4.3(API Level 18)부터는 기본적으로 false

실수로 exported를 지정하지 않고 minSdkVersion을 17 이하도 포함하면
OS 버전의 차이로 공개/비공개가 바뀌는 것에.

AndroidManifest.xml 보지 않으면 문제없는 생각도 들지만. . .



Google Play의 앱인 AndroidManifest.xml을 살펴보세요.

*【이 괄호 안은, 가변입니다】
  • Android 기기에 AndroidManifest를보고 싶은 앱을 설치하십시오
  • Google Play에서 앱 패키지 이름 확인
    앱 페이지 URL에서 확인할 수 있습니다.https://play.google.com/store/apps/details?id=【target package name】

  • adb 명령으로 전체 경로 확인

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


  • adb를 사용하여 apk를 PC에 pull

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

  • apk 확장자를 zip으로 변경


  • zip으로 확장

  • zip의 AndroidManifest.xml을 AXMLPrinter2.jar로 변환
    AXMLPrinter2.jar

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

  • 변환 후의 android.intent.category.LAUNCHER 이외의 요소로,
    exported="true"의 activity, 또는 exported의 기재가 없이 intent-filter가 정의되고 있는 activity를 찾는다.
    체감, 평가가 낮은 앱에서 발견하기 쉬운 느낌
  • 다른 앱에서 호출

  • MainActivity.kt
            val targetPackageName : String = "【target package name】"
            val targetActivityName : String = "【target activity name】"
    
            val intent : Intent = Intent()
            intent.setClassName( targetPackageName, targetActivityName )
            startActivity( intent )
    

    여기에서도 가능

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

    그러면 일반적으로 활동이 일어납니다.
    이 activity가, 같은 패키지의 특정의 처리에 의해서만, 불려 가는 것이 전제이거나 하면, 상정하고 있는 처리를 헹구고, 동작할 가능성도 있다.

    요약



    지식으로서는 여기 보면 쓰고 있다 Android 앱의 보안 설계 및 보안 코딩 가이드
    실제로 모든 리뷰에서 확인하는 것은 현실적이지 않으며 누락이 나오므로 도구를 사용하는 것이 현실적입니다.
    만드는 앱에 따라 보안 측면에 걸리는 금액은 전혀 다를 것입니다.

    좋은 웹페이지 즐겨찾기