android.provider.Telephony.SMS_RECEIVED 的广播者权限

Posted

技术标签:

【中文标题】android.provider.Telephony.SMS_RECEIVED 的广播者权限【英文标题】:broadcaster permission for android.provider.Telephony.SMS_RECEIVED 【发布时间】:2016-09-02 01:58:21 【问题描述】:

我最近使用 HPFortify 服务对我的 android 源代码进行了代码扫描。他们报告了有关其中一个广播接收器的安全漏洞。他们建议使用广播公司的权限来减少攻击向量。这样你就限制了广播器,否则任何恶意应用程序都可以发送意图,广播接收器将处理它。

这是我的实际代码:

String ACTION = "android.provider.Telephony.SMS_RECEIVED"
IntentFilter smsFilter = new IntentFilter(SMSReceiver.ACTION);
                    smsFilter.setPriority(Integer.MAX_VALUE);
                    smsReceiver = createSMSReceiver(ctx, l);
                    ctx.registerReceiver(smsReceiver, smsFilter);

我正在使用以下权限收听权限。

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

理想情况下,代码的最后一行应该是:

 ctx.registerReceiver(smsReceiver, smsFilter, "XXX.boradcaster.permission.XXX", null);

我无法弄清楚广播接收器的权限。谁能建议如何解决这个问题?

【问题讨论】:

【参考方案1】:

您要查找的权限是"android.permission.BROADCAST_SMS",或者您可以使用android.Manifest.permission.BROADCAST_SMS 常量。

【讨论】:

你是怎么知道这个权限的?你能给我更多的信息吗? 只需搜索即可。我不记得我在什么时候找到了这种方法,但是当 SMS API 公开时,the blog page 的详细信息包含在示例代码中。如果文档或开发人员页面中没有类似的内容,那么找到它的可靠方法是搜索源代码。在这种情况下,您将搜索广播该操作的包,然后检查其清单以获得相关权限。 如果广播不是由系统发送的,而是由第三方应用程序发送的,那么权限应该在他们的文档中说明。如果没有,您可以使用PackageManager 检查应用的清单,或反编译 APK。而且,当然,如果是您自己的应用程序广播它,您已经知道该权限。如果没有这一切,你可以在 Stack Overflow 上提问。 :-)

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