将Intent对象作为额外参数传入Intent的putExtra方法是否安全?
问题:Intent对象属于Parcelable类型,调用Intent的putExtra方法时将另一个Intent作为额外参数传入是否属于安全操作?
示例代码如下:
val intentAsParam = Intent(context, Activity1::class.java) val intent = Intent(context, Activity2::class.java) intent.putExtra("PARAM_INTENT", intentAsParam) startActivity(intent)
核心结论
该操作是Android官方支持的合法语法,是否安全完全取决于你的使用场景:
场景说明
- 同应用内部组件传递:属于安全操作。
整个数据交互都在当前应用进程内完成,嵌套Intent的所有内容不会对外暴露,不存在泄露、被第三方篡改的风险,可放心使用。 - 跨进程/传递给第三方应用:存在安全风险。
嵌套Intent的所有内容(包括配置的action、data、携带的extra参数等)序列化后会完全暴露给接收方,接收方可任意读取、修改内容,若包含敏感信息会直接导致数据泄露,极端情况下还可能触发Intent注入漏洞,被恶意应用引导跳转至风险页面。
使用建议
- 同应用内使用时,接收方按如下写法即可正常解析拿到嵌套的Intent:
// Android 12及更低版本写法 val targetIntent = intent.getParcelableExtra<Intent>("PARAM_INTENT") // *Android 13及更高版本推荐写法,避免类型强转风险* val targetIntent = intent.getParcelableExtra("PARAM_INTENT", Intent::class.java) // 后续可直接使用拿到的Intent targetIntent?.let { startActivity(it) }
- 跨进程场景下尽量避免嵌套传递Intent,若必须使用请遵循以下规则:
- 不要在嵌套Intent中存储密码、用户隐私信息等敏感内容
- 对接收方做签名校验,仅允许你信任的应用接收对应数据
- 若必须传递敏感内容,需先做加密处理再存入Intent
内容的提问来源于stack exchange,提问作者aliftc12
相关产品推荐
相关产品推荐

