You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Flutter安卓应用Intent Redirection政策违规问题的复现与修复

Flutter Android应用Intent Redirection漏洞:复现与修复

复现步骤

  • 排查应用中接收外部Intent的组件(如Activity),重点确认是否未对Intent的来源和数据做校验
  • 使用adb构造恶意Intent测试:
    adb shell am start -n com.your.app.package/.MainActivity -d "https://fake-malicious-site.com"
    
  • 若应用直接跳转该URL或使用Intent内的数据,且未验证调用方的包名/签名,即可确认漏洞存在

修复方案

1. 校验Intent调用方合法性

在接收Intent的Android原生Activity的onCreate/onNewIntent方法中添加校验逻辑:

val callingPackage = packageManager.getPackagesForUid(callingUid)?.firstOrNull()
// 仅允许可信包名调用,比如自身应用包名、官方合作服务包名等
val trustedPackages = listOf("com.your.app.package", "com.google.android.gms")
if (callingPackage !in trustedPackages) {
    finish()
    return
}

2. 严格过滤Intent数据

对Intent中的URL等敏感数据做白名单校验:

val intentData = intent.data?.toString()
val allowedDomains = listOf("your-official-domain.com", "your-trusted-partner.com")
if (intentData != null && allowedDomains.none { intentData.startsWith("https://$it") }) {
    finish()
    return
}

3. Flutter层安全规范

  • 使用第三方Intent处理插件时,确认插件已内置安全校验;自定义插件需将校验逻辑放在Android原生层,仅向Flutter传递合规数据
  • 涉及用户敏感操作(如支付、隐私数据访问),禁止使用隐式Intent,必须用显式Intent指定目标组件
  • 必要的外部跳转前,添加用户确认弹窗,明确告知跳转目标地址

修复验证

  • 重复复现步骤的adb命令,确认应用会拦截非法Intent
  • 提交应用前,使用谷歌Play提供的安全检测工具自检,确保漏洞已修复

内容的提问来源于stack exchange,提问作者Midlaj Nazar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 08:42:02