发送恶意广播意图

时间:2020-06-11 08:55:13

标签: android kotlin broadcastreceiver

我已经在我发布的应用中实现了接收广播意图,实际上将在不久的将来完成发送。但是,已经收到了意图,并且由于缺少必需的Bundle Extras,它可能会崩溃。看到此崩溃后,我想使用LocalBroadcastManager,但现在的问题是这是否是一种好习惯。

BroadcastReceiver未在清单中注册,但在Application类中:

class App : Application() {

    override fun onCreate() {
        super.onCreate()
        registerReceiver(NotificationBroadcastReceiver(), IntentFilter("com.me.my_app.REUPLOAD_REQUESTED.open_notification"))
    }
}

现在,我在Crashlytics中收到一个用户的崩溃信息,每小时发生25次:

Fatal Exception: java.lang.RuntimeException
Error receiving broadcast Intent { act=com.me.my_app.REUPLOAD_REQUESTED.open_notification flg=0x10 pkg=com.me.my_app (has extras) } in d.a.a.a.v.b.a@41e45b2

那么什么或谁发送这些意图?可以由用户自己完成吗?

是否使用LocalBroadcastManager

我的应用程序有4个模块:一个包含Application和一些Dagger模块,另一个是用于数据/域/表示层的模块。使用广播的原因是因为有两个松散耦合的组件: 在数据层FirebaseMessagingService中收到一条FCM消息,作为响应,它向NotificationBroadcastReceiver发送一个Intent,该Intent负责显示通知并处理与该通知的交互。

应该使用LocalBroadcastManager吗?这不是实际的IPC,只是一个包含BroadcastReceivers列表的单例。它打包在androidx中,目前还没有标记为不推荐使用。

如果没有,应该使用什么?

1 个答案:

答案 0 :(得分:1)

看到此崩溃后,我将使用LocalBroadcastManager

LocalBroadcastManager已过时。某些人认为这种用于过程内部通信的“事件总线”模式是一种不良的编程实践。

那么什么或谁发送这些意图?可以由用户自己完成吗?

好的。攻击者将发起攻击。可能是通过adb shell,或者是攻击者编写的一些自定义应用程序,或者是某些自动化的安全扫描应用程序。

请勿在应用程序进程内使用IPC(registerReceiver()上的Context)进行通信。