Android 嵌套 Intent

本文探讨了Android应用中使用嵌套Intent作为回调的安全隐患,包括允许外部应用启动私有Activity的问题,并提出了使用PendingIntent作为解决方案,以增强应用的安全性。
摘要由CSDN通过智能技术生成

您的应用是否提供了这样的 Service,当触发某些操作时,作为回调它会启动另一个应用的 Activity?

比如,一个 Intent 接受了另一个 Intent 作为它的 Extra 参数,并将其作为参数通过 startActivity() 进行调用。

您是否知道,这种做法会让您的应用变得容易被攻击?

接下来,我将会解释使用这种方法带来的问题,并提供一个解决方案来让您的应用在更安全的前提下实现相同功能。

问题

我们期望这种类型的交互流程如下图所示:

流程图展示了一个启动回调 activity 的 Intent 如何作为一个扩展数据添加到一个启动 Service 的 Intent 中,然后使用此 Intent 启动回调 Activity

如上图所示,Client 应用为 ClientCallbackActivity 创建了一个 Intent 并将其作为 extra 添加到启动 Provider 应用的 ApiService 组件的 Intent 中。处理完启动 ApiService 的请求之后,Provider 应用使用 Client 应用创建的 Intent 去启动 ClientCallbackActivity。

❗️这里需要注意的是 Provider 应用正在使用它自己的应用 Context 去调用 startActivity() 方法。这样的调用方式会产生两个不良的后果:

  • 由于 ClientCallbackActivity 是被 Provider 应用从外部启动的,在清单文件中必须将其标识为 exported,这样不仅 Provider 应用可以启动 ClientCallbackActivity,设备上任何其他的应用也都可以启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值