【发布时间】: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/…。以谷歌为例
标签: android android-permissions android-broadcast android-broadcastreceiver