gpt4 book ai didi

android - SendBroadcast 可能会导致哪些安全问题,什么是更好的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:29 29 4
gpt4 key购买 nike

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

我想知道的是:

<强>1。为什么要在 Activity 上使用广播接收器来获取结果?
我认为广播接收器对于处理实际的设备消息更有用,而不仅仅是在应用程序中传递 Intent 。

<强>2。开发人员可能会遇到什么样的安全问题?
如果我假设任何知道我的包名称(可能通过逆向工程)的人基本上都能捕捉到发送的 Intent 并看到传递的信息,我是否正确用它吗?

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

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

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

干杯,

最佳答案

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

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

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

As per google docs for LocalBroadcastManager:

  • 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

最后的话:如果您需要在您的应用程序内广播消息并且不想在全局范围内发送它们,那么 LocalBroadcastManager 是最佳选择。否则走寻常路

关于android - SendBroadcast 可能会导致哪些安全问题,什么是更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9989283/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com