android.net.conn.CONNECTIVITY\u更改的广播公司许可

android.net.conn.CONNECTIVITY\u更改的广播公司许可,android,android-permissions,android-broadcastreceiver,Android,Android Permissions,Android Broadcastreceiver,我最近使用HPFortify服务对我的Android源代码进行了代码扫描。他们报告了其中一个广播接收器的安全漏洞。他们建议使用广播许可来减少攻击向量。通过这种方式,您可以限制广播者,否则任何恶意应用程序都可以发送意图,广播接收者将对其进行处理 以下是我的实际代码: <receiver android:name="com.xyz.core.util.ConnectionChangeReceiver" android:label="NetworkConnection">

我最近使用HPFortify服务对我的Android源代码进行了代码扫描。他们报告了其中一个广播接收器的安全漏洞。他们建议使用广播许可来减少攻击向量。通过这种方式,您可以限制广播者,否则任何恶意应用程序都可以发送意图,广播接收者将对其进行处理

以下是我的实际代码:

<receiver
    android:name="com.xyz.core.util.ConnectionChangeReceiver"
    android:label="NetworkConnection">
    <intent-filter>
       <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
    </intent-filter>
</receiver>

HPfortify建议我使用以下内容:

<receiver
        android:name="com.xyz.core.util.ConnectionChangeReceiver"
        android:permission="SOME-PERMISSION"
        android:label="NetworkConnection">
        <intent-filter>
           <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
    </receiver>


我试图查看源代码和文档,但找不到合适的广播公司许可

您可以创建自己的权限,这样就不可能呼叫您的接收者,除非呼叫者具有相同的权限。这对于协作应用程序非常有用

以下是Android清单中权限标记的说明:

您可以做的是:

<permission
    android:name="com.xyz.permission.YOUR_PERMISSION"
    android:protectionLevel="normal" />

<uses-permission
    android:name="com.xyz.permission.YOUR_PERMISSION" />

<receiver
    android:name="com.xyz.core.util.ConnectionChangeReceiver"
    android:permission="com.xyz.permission.YOUR_PERMISSION"
    android:label="NetworkConnection">
    <intent-filter>
       <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
    </intent-filter>
</receiver>

您可以创建自己的权限,这样就不可能呼叫您的接收者,除非呼叫者具有相同的权限。这对于协作应用程序非常有用

以下是Android清单中权限标记的说明:

您可以做的是:

<permission
    android:name="com.xyz.permission.YOUR_PERMISSION"
    android:protectionLevel="normal" />

<uses-permission
    android:name="com.xyz.permission.YOUR_PERMISSION" />

<receiver
    android:name="com.xyz.core.util.ConnectionChangeReceiver"
    android:permission="com.xyz.permission.YOUR_PERMISSION"
    android:label="NetworkConnection">
    <intent-filter>
       <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
    </intent-filter>
</receiver>


感谢您提供答案
android.net.con.CONNECTIVITY\u CHANGE
是由系统发送的,因此此权限设置将不起作用,因为系统将不具有相同的权限权限?如果您使用
signatureOrSystem
作为
protectionLevel
,它应该会起作用。我将使用它。我还考虑将导出值用作
false
。我用过类似的广播接收器,它确实起了作用。这也是减少附加向量的另一种方法。我怀疑这是否适用于系统触发接收器。出于某种原因,导出的默认值为
true
。据我所知,如果你将其设置为
false
,那么除了你自己的应用程序之外,其他任何东西都无法触发它。我用一个广播接收器
android.intent.action.MY_PACKAGE_替换了它,它确实起了作用。我不知道它是如何实现的,但我可以尝试与其他广播接收器。谢谢提供您的答案
android.net.con.CONNECTIVITY\u CHANGE
是由系统发送的,因此此权限设置将不起作用,因为系统将不具有相同的权限权限?如果您使用
signatureOrSystem
作为
protectionLevel
,它应该会起作用。我将使用它。我还考虑将导出值用作
false
。我用过类似的广播接收器,它确实起了作用。这也是减少附加向量的另一种方法。我怀疑这是否适用于系统触发接收器。出于某种原因,导出的默认值为
true
。据我所知,如果你将其设置为
false
,那么除了你自己的应用程序之外,其他任何东西都无法触发它。我用一个广播接收器
android.intent.action.MY_PACKAGE_替换了它,它确实起了作用。我不知道它是如何实现的,但我可以尝试与其他广播接收机。