私人广播发送者和接收者权限
Posted
技术标签:
【中文标题】私人广播发送者和接收者权限【英文标题】:private broadcast sender and receiver permissions 【发布时间】:2016-09-04 21:06:20 【问题描述】:我最近使用 HPFortify 服务对我的 android 源代码进行了代码扫描。他们报告了有关广播接收器和发送器之一的安全漏洞。广播发送者和接收者在应用程序内部,意图不发送到应用程序外部。这些主要用于内部通信。 HPFortify 建议使用广播者权限来减少攻击向量。这样你就限制了广播器,否则任何恶意应用程序都可以发送意图,广播接收器将处理它。同样,他们建议使用接收者权限,以便目标接收者接收广播的意图。此广播器和接收器在应用程序内部,其他应用程序不使用此意图。 这是我的广播公司的实际代码:
Intent updatedIntent = new Intent("SOME-ACTION");
Context context = getAppContext();
context.sendBroadcast(updatedIntent);
我正在使用以下代码 sn-p 动态注册广播接收器。
this.registerReceiver(updatedReceiver,
new IntentFilter("SOME-ACTION"));
HPFortify 建议使用带有权限字符串示例的sendBroadcast
:
Intent updatedIntent = new Intent("SOME-ACTION");
Context context = getAppContext();
context.sendBroadcast(updatedIntent, "SOME-PERMISSION");
广播接收器也是如此:
this.registerReceiver(updatedReceiver,
new IntentFilter("SOME-ACTION"),
"SOME-PERMISSION", null);
我不确定如何定义此权限并在广播器和广播接收器中使用它。是否需要在AndroidManifest.xml中定义私有权限并在这里使用?
【问题讨论】:
您在使用 LocalBroadCastManager 吗?本地广播管理器阻止其他应用程序向您的应用程序发送广播意图。屈膝的 android 开发者 dot com。 " 其他应用程序无法将这些广播发送到您的应用程序,因此您不必担心存在它们可以利用的安全漏洞。" 我需要定义任何权限还是可以直接使用这个类? 根据我和android网站:-)。如果您使用的是 localbroadcastmanager ,则无需定义权限。 developer.android.com/reference/android/support/v4/content/…。以谷歌为例 【参考方案1】:如果您需要在应用程序内广播,请使用 LocalBroadCastManager,因为本地广播管理器永远不会在当前进程之外发送广播意图。
如果您希望其他应用程序能够接收或发送您的广播,请使用 BroadCastManager 并且您需要申请使用权限(自定义用户权限)。
有关更多信息,请参阅下面的 Android 广播接收器文档,它们在安全部分提供了有关安全性的详细信息。
http://developer.android.com/reference/android/content/BroadcastReceiver.html
【讨论】:
【参考方案2】:需要在AndroidManifest.xml中定义私有权限并在这里使用吗?
是的。权限始终必须在清单中定义。否则 Android 无法知道该权限使用哪个保护级别。
【讨论】:
如果我使用LocalBoadCastManager
,是否还需要使用权限?
@F43nd1r 仅当您想跨应用程序发送广播时才需要权限。 developer.android.com/reference/android/content/… 在安全部分指定。以上是关于私人广播发送者和接收者权限的主要内容,如果未能解决你的问题,请参考以下文章