Broadcast和BroadcastReciver的安全使用

来源:互联网 发布:网络婚恋诈骗广东 编辑:程序博客网 时间:2024/06/14 19:00

Broadcast的作用:

  1. 监听系统广播获得相应的系统状态:比如:监听系统的网络状态变化、电量变化等。
  2. 跨进程通讯:由于Android系统中的应用程序直接不能共享内存,因此,在不同的应用程序直接进行数据交互就可以使用广播来完成。
  3. 程序内通讯:如果我们的需要在层级跨度比较大的页面之间进行数据交互,那么使用广播则更加高效和快捷。比如:只能进行单点登录操作的应用,用户已经在A设备上登录,此时又在B设备上登录,那么A设备上的账号将不能用,需要重新登录或者切换账号。如果时候切换账户,就需要告知相应的界面数据已经改变,需要重新加载新用户的数据。

安全使用指哪方面呢

这里主要说的是程序内部的广播和广播接收者的的安全使用。

通常情况下,我们直接使用sendBroadcast发送广播,注册了相应action的广播接收者就能接到数据。如果我们的程序反编译后知道了响应的发送广播和接收广播的格式,那么可能一些恶意软件使用这个漏洞,给我们的程序带来一定的影响或者损失。

如何安全使用

使用LocalBroadcastManager

LocalBroadcastManager的注释文档如下:

Helper to register for and send broadcasts of Intents to local objects within your process. This is has a number of advantages over sending global broadcasts with sendBroadcast(Intent):You know that the data you are broadcasting won’t leave your app, so don’t need to worry about leaking private data.It is not possible for other applications to send these broadcasts to your app, so you don’t need to worry about having security holes they can exploit.It is more efficient than sending a global broadcast through the system.

大概意思:
1. 发送的广播只会在当前APP中传播,确保了数据的安全
2. 其它APP的广播无法发送到本APP中,不用担心安全漏洞被其它APP所利用
3. 比系统全局广播更加高效

总结

在程序开发中,如果在程序内容通信使用到了广播,那么建议使用系统提供的LocalBroadcastManager来管理广播,这样能够高效和安全的使用广播。