Google Play警告:WebViewClient.onReceivedSslError处理程序

上架google应用收到了Google的一封电子邮件,其中包含以下主题:“Google Play警告:SSL错误处理程序漏洞”.在这封电子邮件中,Google解释说,我的应用程序有一个[“不安全的WebViewClient.onReceivedSslError处理程序”实现,具体而言,该实现将忽略所有SSL证书验证错误,使您的应用程序易受中间人攻击,攻击者可能更改受影响的WebView的内容,读取传输的数据(如登录凭据),并使用 [JavaScript](javascript:void())在应用程序内执行代码

我的代码

    @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                // TODO Auto-generated method stub
                // super.onReceivedSslError(view, handler, error);
                    handler.proceed();// 接受https所有网站的证书
            }
        });

警告是关于你应该通知用户去一个无效证书的页面,你不应该直接进行.
您可以隐藏警报对话框,如下所示:
修改onReceivedSslError方法

    @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                // TODO Auto-generated method stub
                // super.onReceivedSslError(view, handler, error);
                AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
                builder.setMessage("SSL认证失败,是否继续访问?");
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        handler.proceed();// 接受https所有网站的证书
                    }
                });

                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        handler.cancel();
                    }
                });

                AlertDialog dialog = builder.create();
                dialog.show();
            }
        });

然后就OK了

原文解答地址

你可能感兴趣的:(Google Play警告:WebViewClient.onReceivedSslError处理程序)