上架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了