SendBroadcast可能导致哪些安全问题,哪种方法更好?

Sti*_*ay5 4 security android broadcastreceiver

我再次提出了一个问题,这与Android有关.我可以更好地了解发送广播的工作原理.

我想知道的是:

1.为什么人们会将广播接收器用于活动以获得结果?
我认为广播接收器对于处理实际设备消息更有用,而不仅仅是在应用程序中传递意图.

2.开发人员遇到什么样的安全问题?
我是否正确,如果我认为,任何知道我的包名称的人(可能通过逆向工程),基本上可以捕获发送的意图并查看随之传递的信息?

3.如果要将对象传递给其他活动,LocalBroadcastManager有什么用处?
我读到如果您不希望发送的意图泄漏到应用程序之外,这可能会更好.这是否也意味着即使有人拥有包名,他们仍然无法在应用程序外接收广播?

如果您认为我的问题不完整或基于有缺陷的假设,请告诉我,以便我可以从中学习.:)

非常感谢所有可以提供帮助的人.

干杯,

waq*_*lam 8

1)广播接收器是一种在没有任何UI的情况下全局接收消息(意图)的机制.它们很适合在不同的组件之间传递信息,如Service,Activity甚至BroadcastReceiver本身.它们可以在清单中定义,以监听特定操作并执行操作(例如启动服务/活动),即使您的应用程序未运行也是如此.但是,在activityForResult中,您的应用(活动)必须正在运行才能接收结果,这些结果可能始终不合适.

2)是的,如果您的操作字符串为其他应用程序所知,那么您的广播将暴露给任何侦听这些特定操作的接收方.要避免这种情况,请使用LocalBroadcastManager.

3)使用LocalBroadcastManager是确保仅在应用程序的上下文中广播和收听广播来增加隐私的最佳方式.其他应用程序无法收听此类广播,因为他们拥有自己的上下文并且不知道您的应用程序的上下文.

根据LocalBroadcastManager的谷歌文档:

  • 您知道您正在播放的数据不会离开您的应用,因此无需担心泄露私人数据.
  • 其他应用程序无法将这些广播发送到您的应用程序,因此您无需担心他们可以利用安全漏洞.
  • 它比通过系统发送全局广播更有效

最后的话:如果您需要在应用程序中广播消息而不想全局发送消息,那么LocalBroadcastManager是最佳选择.否则按普通方式行事