私人广播发送者和接收者权限

时间:2016-05-10 04:16:25

标签: android android-permissions android-broadcast android-broadcastreceiver

我最近使用HPFortify服务对我的Android源代码进行了代码扫描。他们报告了一个广播接收者和发送者的安全漏洞。广播发送方和接收方是应用程序的内部,并且意图不会在应用程序之外发送。这些主要用于内部通信。 HPFortify建议使用广播公司的权限来减少攻击媒介。这样您就可以限制广播,否则任何恶意应用都可以发送意图,广播接收者也会对其进行处理。类似地,他们建议使用接收者许可,以便预期的接收者接收广播的意图。此广播器和接收器是应用程序的内部,其他应用程序不使用此意图。 这是我对广播公司的实际代码:

 Intent updatedIntent = new Intent("SOME-ACTION");
 Context context = getAppContext();
 context.sendBroadcast(updatedIntent);

我使用以下代码片段动态注册广播接收器。

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中定义私有权限并在此处使用?

2 个答案:

答案 0 :(得分:3)

如果您需要在应用程序内广播,请使用LocalBroadCastManager,因为本地广播管理器从不在当前进程之外发送广播意图。

如果您希望其他应用程序能够接收或发送您的广播,请使用BroadCastManager,您需要应用uses-permission(自定义用户权限)。

有关详细信息,请参阅下面的广播接收器的Android文档,他们提供有关安全性部分安全性的详细信息。

http://developer.android.com/reference/android/content/BroadcastReceiver.html

答案 1 :(得分:0)

  

我是否需要在AndroidManifest.xml中定义私有权限并在此处使用?

是。必须始终在清单中定义权限。否则Android无法知道该权限使用哪个保护级别。