【问题标题】:What security issues might SendBroadcast cause and what is a better approach?SendBroadcast 可能会导致哪些安全问题以及更好的方法是什么?
【发布时间】:2012-04-03 07:56:35
【问题描述】:

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

我想知道的是:

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

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

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

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

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

干杯,

【问题讨论】:

    标签: android security broadcastreceiver


    【解决方案1】:

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

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

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

    根据 LocalBroadcastManager 的谷歌文档

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

    最后的话:如果您需要在应用内广播消息并且不想在全球范围内发送消息,那么 LocalBroadcastManager 是最佳选择。否则就用普通的方式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多