SSL错误处理程序WebView Android

时间:2018-07-27 16:24:47

标签: android webview google-play android-security sslerrorhandler

当我尝试发布我的应用时,Google Play控制台说我的应用中存在SSL错误处理程序漏洞。我遵循了Google帮助中心解决方案https://support.google.com/faqs/answer/7071387,并尝试再次发布,但没有成功。我已经与Google Play支持小组联系,他们已经回答了我:

  

我看了看您的应用程序,版本10的PET App包含以下类,其中包含易受攻击的SslErrorHandler版本:

这是我用来处理SslError的代码:

@Override
        public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
            final AlertDialog.Builder builder = new AlertDialog.Builder(SigpetActivity.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;
            }
            builder.setMessage(message+" Clique em 'CONTINUAR' para permitir o acesso ao Sigpet");
            builder.setPositiveButton("continuar", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    handler.proceed();
                }
            });
            builder.setNegativeButton("cancelar", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    handler.cancel();
                    finish();
                }
            });
            final AlertDialog dialog = builder.create();
            dialog.show();
        }

我没有为此使用第三方库,只有android webkit WebClient。

如何解决它,让他们允许我发布我的应用?

1 个答案:

答案 0 :(得分:0)

我的猜测是Google不希望您在proceed()回调中异步调用cancel()onClick。相反,您应该在onReceivedSslError()方法本身中同步进行此操作。