发送广播可能会引起哪些安全问题,有什么更好的解决方法?

4

我又有一个问题,与Android相关。这只是为了让我更深入地了解发送广播的工作方式。

我想知道的是:

1. 为什么要使用广播接收器而不是活动结果?
我认为广播接收器更适合处理实际设备消息,而不仅仅是在应用程序中传递意图。

2. 开发人员可能会遇到什么样的安全问题?
如果我假设任何人都知道我的包名称(可能通过反向工程),那么他们基本上可以捕获发送的意图并查看其中传递的信息,这个假设是否正确?

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

如果您认为我的问题不完整或基于错误的假设,请告诉我,以便我能够学习。 :)

非常感谢所有能够帮忙的人。

谢谢,

Do

1个回答

8

1) 广播接收器是一种机制,用于在没有任何用户界面的情况下全局接收消息(意图)。它们非常适合在不同组件之间传递信息,如服务、活动或甚至广播接收器本身。可以在清单中定义它们以侦听特定操作并执行任务(例如启动服务/活动),即使您的应用程序没有运行。但是,在activityForResult中,您的应用程序(活动)必须运行才能接收结果,这可能并不总是合适。

2) 是的,如果其他应用程序知道您的“action string”,那么您的广播将暴露给任何侦听这些特定操作的接收器。为避免此情况,请使用LocalBroadcastManager

3) 使用LocalBroadcastManager是提高隐私的最佳方法,因为它确保您的广播仅在您的应用程序上下文内广播和侦听。其他应用程序无法侦听此类广播,因为它们有自己的上下文并不知道您的应用程序上下文。

根据Google关于LocalBroadcastManager的文档::

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

最后的建议:如果您需要在应用程序内广播消息而不想将其全局发送,则LocalBroadcastManager是最好的选择。否则,请使用普通方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接