android.net.conn.CONNECTIVITY_CHANGE 的广播者权限

Posted

技术标签:

【中文标题】android.net.conn.CONNECTIVITY_CHANGE 的广播者权限【英文标题】:broadcaster permission for android.net.conn.CONNECTIVITY_CHANGE 【发布时间】:2016-09-06 02:42:14 【问题描述】:

我最近使用 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>

我尝试查看源代码和文档,但找不到正确的广播公司权限。

【问题讨论】:

【参考方案1】:

您可以创建自己的权限,这使得除非呼叫者具有相同的权限,否则无法呼叫您的接收者。这对于协作应用程序很有用。

以下是 Android Manifest 中权限标签的说明: http://developer.android.com/guide/topics/manifest/permission-element.html

你可以做的是这样的:

<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_CHANGE是系统发送的,所以这个权限的东西不会起作用,因为系统没有相同的权限吗? 如果你使用signatureOrSystem 作为protectionLevel,它应该可以工作。 我会用那个。我还想将导出的值用作false。我用过类似的广播接收器,它确实有效。这也是减少附加向量的另一种方法。 我怀疑这是否适用于系统触发的接收器。导出的默认值为true 是有原因的。据我所知,如果您将其设置为 false,那么除了您自己的应用程序之外,没有其他东西可以触发它。 我用其中一个广播接收器android.intent.action.MY_PACKAGE_REPLACED 对其进行了测试,它确实有效。我不确定它是如何实现的,但我可以尝试使用其他广播接收器。

以上是关于android.net.conn.CONNECTIVITY_CHANGE 的广播者权限的主要内容,如果未能解决你的问题,请参考以下文章