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

时间:2012-04-03 07:56:35

标签: android security broadcastreceiver

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

我想知道的是:

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

2。开发人员会遇到什么样的安全问题?如果我认为,任何知道我的包名(可能通过逆向工程)的人都可以基本上捕获发送的意图并查看通过的信息用它?

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

如果您认为我的问题不完整或基于有缺陷的假设,请告诉我,以便我可以从中吸取教训。 :)

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

干杯,

待办事项

1 个答案:

答案 0 :(得分:8)

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

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

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

  

根据LocalBroadcastManager的Google文档

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

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