首页 > 解决方案 > Google Play 商店:由于 Intent 重定向漏洞,Android 应用被拒绝

问题描述

我们收到了由于 Intent 重定向而导致应用被拒绝的通知,为了适应那些我们在代码中应用了一些检查但今天仍然被拒绝的应用。您能否在下面阅读有关应用程序要求的详细信息以及为适应错误/警告所做的更改。

应用简介: 我们的应用结合了 TWA(PWA Wrapper)和原生 Android 代码,其中身份验证内容主要发生在原生代码中,然后在成功登录时,用户将使用 TWA Launcher 活动重定向到 PWA。为了从 TWA 返回到本机代码,我们正在使用 Intent 过滤器。我们浏览了电子邮件中“ Intent Redirection ”(此处)下提供的选项,但 3 三个中没有一个完全适合我们的案例,即从 TWA Launcher Web URL 到同一应用程序中的 Native android 活动。尽管我们添加了一些额外的检查,如下面的从网页到本机代码的片段所示(由 Depplink 调用:


if (intent.`package` == null || !intent.`package`.equals(packageName)) {
    finish()
}else {
    //Business logic
    // Open new activity from here
}

以下详细信息来自 Google Play 控制台门户。

发布前报告详细信息

意图重定向
Errorbrightness_1Security
您的应用包含意图重定向漏洞。有关详细信息,请参阅此 Google 帮助中心文章。• androidx.activity.ComponentActivity.startActivityForResult

同样在一个地方,我们使用了现在已弃用的startActivityForResult,我们将其替换为新的 API(即registerForActivityResult)。请参考下面的代码片段:
//代码片段
旧代码:

val intent = Intent(this, TwaImplicationActivity::class.java)
 startActivityForResult(intent, AppConstants.RequestCode.TWA_IMPLICATION)

新变化:

twaActivityStartForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
    if(result.resultCode == Activity.RESULT_OK){
        if(viewModel.showEnrolment.get()!!){
            navigateToEnrolment()
        } else {
            navigateToLogin()
        }
    }
}



val intent = Intent(this, TwaImplicationActivity::class.java)
 twaActivityStartForResult?.launch(intent)

如果有的话,我错过了。请告诉我们正确的地方,我在我们的应用程序中错过了安全检查的地方?

标签: androidandroid-intentgoogle-playandroid-security

解决方案


我认为您的 startActivityForResult 是问题所在,上次我也遇到了这个问题,所以我的建议是将 startActivityForResult 更改为 startActivity(this, TwaImplicationActivity::class.java)


推荐阅读