我最近使用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中定义私有权限并在此处使用?
答案 0 :(得分:3)
如果您需要在应用程序内广播,请使用LocalBroadCastManager,因为本地广播管理器从不在当前进程之外发送广播意图。
如果您希望其他应用程序能够接收或发送您的广播,请使用BroadCastManager,您需要应用uses-permission(自定义用户权限)。
有关详细信息,请参阅下面的广播接收器的Android文档,他们提供有关安全性部分安全性的详细信息。
http://developer.android.com/reference/android/content/BroadcastReceiver.html
答案 1 :(得分:0)
我是否需要在AndroidManifest.xml中定义私有权限并在此处使用?
是。必须始终在清单中定义权限。否则Android无法知道该权限使用哪个保护级别。