【问题标题】:Google Play Developer Console rejected My Application UpdateGoogle Play 开发者控制台拒绝了我的应用程序更新
【发布时间】:2016-11-12 16:48:00
【问题描述】:

我正在尝试了解并解决为什么我的应用程序被拒绝我知道它与 SSL 有关,但我似乎无法找到导致它的依赖项。 我正在使用下一个设置:

  1. Android N (24)
  2. 面料。
  3. 混合面板。
  4. Quickblox。
  5. Crashlytics
  6. 分析。

任何帮助将不胜感激。


更新: 这是来自警报部分

安全警报

您的应用程序的 WebViewClient.onReceivedSslError 处理程序的实现不安全。具体来说,该实现会忽略所有 SSL 证书验证错误,从而使您的应用容易受到中间人攻击。攻击者可以更改受影响的 WebView 的内容,读取传输的数据(例如登录凭据),并使用 JavaScript 在应用程序内执行代码。 要正确处理 SSL 证书验证,请更改您的代码以在服务器提供的证书符合您的期望时调用 SslErrorHandler.proceed(),否则调用 SslErrorHandler.cancel()。包含受影响应用程序和类的电子邮件警报已发送到您的开发者帐户地址。 请尽快解决此漏洞,并增加升级后的APK版本号。有关 SSL 错误处理程序的更多信息,请参阅开发者帮助中心中的文档。对于其他技术问题,您可以发帖到https://www.stackoverflow.com/questions 并使用标签“android-security”和“SslErrorHandler”。如果您使用的是负责此问题的第 3 方库,请通知第 3 方并与他们一起解决问题。 要确认您已正确升级,请将更新后的版本上传到开发者控制台,并在五小时后回来查看。如果应用程序未正确升级,我们将显示警告。 请注意,虽然这些特定问题可能不会影响使用 WebView SSL 的每个应用程序,但最好及时更新所有安全补丁。存在使用户面临被入侵风险的漏洞的应用程序可能会被视为违反了我们的恶意行为政策和《开发者分发协议》第 4.4 节。 请确保所有发布的应用都符合开发者分发协议和开发者计划政策。如果您有任何问题或疑虑,请通过 Google Play 开发者帮助中心联系我们的支持团队。 影响 APK 版本 2。

【问题讨论】:

  • 您是否收到“您的应用正在使用不安全的 X509TrustManager [...] 实现”消息?如果是这样,我会发布一个修复。如果不是,请说明您收到的消息是您的应用被拒绝的原因。
  • 通常你会希望通过删除依赖项然后一次添加一个来逐步解决这个问题,以确保你抓住问题的根源
  • 看到了这个答案,因为它在第三方库中的某个地方我真的什么都做不了..而且我知道我需要删除每个库并查看是哪个库导致它,我只是不想得到还没有想到有一个简单的解决方案:(
  • 如果您没有在自己的代码中使用WebViewClient,则此问题一定来自您的依赖项之一。首先确保您使用的是这些依赖项的最新版本。也许这个问题已经在比您使用的版本更新的版本中得到解决。

标签: android android-security google-console-developer sslerrorhandler


【解决方案1】:

您需要更新您的 webViewClient 处理程序,如下所述。如果在您的应用程序中您没有使用带有 onReceivedSslError() 的 webview,则根据 Google 的新安全政策检查您使用的 SDK 最新版本以获取更新版本。

要正确处理 SSL 证书验证,请更改代码以在服务器提供的证书符合您的期望时调用 SslErrorHandler.proceed(),否则调用 SslErrorHandler.cancel()。

例如,我添加了一个警告对话框以使用户确认并且似乎 Google 不再显示警告。

    @Override
    public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    String message = "SSL Certificate error.";
        switch (error.getPrimaryError()) {
            case SslError.SSL_UNTRUSTED:
                message = "The certificate authority is not trusted.";
                break;
            case SslError.SSL_EXPIRED:
                message = "The certificate has expired.";
                break;
            case SslError.SSL_IDMISMATCH:
                message = "The certificate Hostname mismatch.";
                break;
            case SslError.SSL_NOTYETVALID:
                message = "The certificate is not yet valid.";
                break;
        }
        message += " Do you want to continue anyway?";

        builder.setTitle("SSL Certificate Error");
        builder.setMessage(message);
    builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.proceed();
        }
    });
    builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.cancel();
        }
    });
    final AlertDialog dialog = builder.create();
    dialog.show();
}

更改后不会显示警告。

【讨论】:

    【解决方案2】:

    更新版本修复后问题是BackEndless。

    【讨论】:

    • 你能详细解释一下吗?
    猜你喜欢
    • 1970-01-01
    • 2017-03-05
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2017-12-10
    • 2021-05-28
    • 1970-01-01
    相关资源
    最近更新 更多