Webview SslError处理总结

如何处理应用中的 WebView SSL 错误处理程序提醒

本文面向的是在应用中采用的 WebViewClient.onReceivedSslError 处理程序实施方式不安全的开发者。具体来说,这种实施方式会忽略所有 SSL 证书验证错误,使应用容易受到中间人攻击。攻击者可能会更改受影响的 WebView 内容、读取传输的数据(例如登录凭据),以及执行应用中使用 JavaScript 的代码。 从 2016 年 11 月 25 日起,Google Play 将禁止发布任何包含此类漏洞的新应用或应用更新。您已发布的 APK 版本不会受到影响,但是,在修复此漏洞前,您将无法为应用发布任何更新。

后续步骤

1. 为了纠正此问题,请将您的应用代码更新为在服务器提供的证书符合您的预期时调用 SslErrorHandler.proceed(),否则调用 SslErrorHandler.cancel()。

2. 如果是您使用的第三方库导致的安全漏洞,请通知该第三方,并与其合作解决此问题。

3. 更改完成后,请登录 Developer Console 并提交应用的更新版本。

4. 过 5 个小时后再回来查看。如果应用未正确更新,系统将会显示相应的警告消息。请注意,即使您的应用已修复相应漏洞,处理过程也可能会有所延迟,这是很常见的情况。 有关 SSL 错误处理程序的详情,请访问 Android 开发者帮助中心查看相关文档。如有其他技术问题,您可以在 https://www.stackoverflow.com/questions 上发帖咨询并使用“android-security”和“SslErrorHandler”标签。 尽管这些具体问题不一定会对使用 WebView SSL 的所有应用都造成影响,但我们仍建议您安装所有最新的安全补丁。如果应用包含会让用户面临入侵风险的安全漏洞,那么我们可能会将其视为危险产品(违反《内容政策》和《开发者分发协议》第 4.4 条的相关规定)。 此外,应用还必须遵循开发者分发协议和内容政策。如果您认为我们发送此警告的判断有误,请通过 Google Play 开发者帮助中心与我们的政策支持团队联系。

关于上述问题的解决,其实我们需要按照需求来思考。如果是我们为了实现双向验证问题,那么请参考如下博文

Android 让WebView完美支持https双向认证(SSL)

如果是解决普通问题,请参考

StackOverflow:onReceiveSslError实现 ssl证书提示

@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(R.string.notification_error_ssl_cert_invalid);
    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();
}

当然,测试环境为了抓包,我们可以作如下设置

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                if(BuildConfig.DEBUG) {
                    handler.proceed(); //可能造成中间人攻击
                }else{
                    super.onReceivedSslError(view, handler, error);
                }
}

我们这里给出一个关于WebView的优化

WebView你真的熟悉吗?看了才知道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值