【问题标题】:broadcaster permission for android.net.conn.CONNECTIVITY_CHANGEandroid.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>

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

【问题讨论】:

    标签: android android-permissions android-broadcastreceiver


    【解决方案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 对其进行了测试,它确实有效。我不确定它是如何实现的,但我可以尝试使用其他广播接收器。
    猜你喜欢
    • 2016-09-02
    • 2016-12-28
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2018-01-20
    • 2017-05-13
    • 1970-01-01
    相关资源
    最近更新 更多