【问题标题】:How to Fix vulnerability at Manifest.xml file in Android for an exposed component如何修复 Android 中 Manifest.xml 文件中暴露组件的漏洞
【发布时间】:2021-10-10 06:17:42
【问题描述】:

我需要将我的应用程序的一个模块公开给多个应用程序。因为,我没有指定活动的任何权限或公开属性。

<activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.Transparent">
</activity>

有了这个,我可以启动应用程序,我也可以通过调用意图从其他应用程序执行活动。

但是,当我与 SonarQube 集成时,它会显示漏洞并说明以下问题。

对此导出的组件实施权限。

为了解决这个问题,我尝试了以下方法。

  1. 如果我实现了引用权限,则漏洞被删除,但我无法运行应用程序(我的意思是不能对其他应用程序的任何操作进行操作)。

在我的应用中,我已经定义了权限

<permission android:name="com.myApp.NORMAL_PERMISSION"
    android:description="@string/perm_desc_NORMAL_PERMISSION"
    android:label="@string/perm_label_NORMAL_PERMISSION"
    android:protectionLevel="normal" />

我将此权限用于我的活动,如下所示。

 <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:permission="com.myApp.NORMAL_PERMISSION"
        android:theme="@style/Theme.Transparent">

但是,我无法通过调用意图从其他应用程序执行任何操作。但是,漏洞已得到修复。

  1. 如果我将以下字段添加到活动中,它仍然在漏洞 android:exported="true" 下列出

  2. 如果它的 android:exported="false",漏洞被移除,但应用程序完全无法运行

让我知道修复此漏洞的任何其他方法。

【问题讨论】:

    标签: android android-studio kotlin sonarqube android-manifest


    【解决方案1】:

    “exported”属性描述了是否允许其他人使用它。

    因此,如果您在某个 Activity 上设置了 "exported=false",则任何其他应用,甚至 Android 系统本身都无法启动它。只有您可以在您自己的应用程序中执行此操作。

    因此,在标记为 LAUNCHER Activity 的 Activity 上设置 "exported=false" 基本上会告诉系统它永远无法启动您的应用程序。

    链接: https://developer.android.com/guide/topics/manifest/receiver-element.html

    true :广播接收器可以接收相同或其他应用程序发送的事件

    false‍ :广播接收者可以接收同一个应用发送的事件

    【讨论】:

      【解决方案2】:

      在我的主要活动中,其中哈希意图过滤操作 android.intent.action.MAIN 和类别 android.intent.category.LAUNCHER。

      它的目的是在没有任何特殊权限的情况下从其他应用程序启动。

      所以,它不需要许可。

      <activity
          . . .
          android:exported="true"
          android:permission="" >
      

      也就是说,将权限定义为空字符串可以解决问题并明确表明您的意图,即启动此活动不需要权限。

      【讨论】:

        猜你喜欢
        • 2019-02-02
        • 1970-01-01
        • 2017-10-23
        • 2023-02-21
        • 1970-01-01
        • 2013-02-06
        • 1970-01-01
        • 1970-01-01
        • 2021-08-01
        相关资源
        最近更新 更多