Android Webview上的ssl warning的处理方式详解及实例

 更新时间:2017年02月25日 11:59:23   作者:yizhihaohut  
这篇文章主要介绍了Android Webview上的ssl warning的处理方式详解及实例的相关资料,需要的朋友可以参考下

Android Webview上的ssl warning的处理方式详解

前言:

因为最近遇到google pay上汇报的安全漏洞问题,需要处理ssl warning.

安全提醒

您的应用中 WebViewClient.onReceivedSslError 处理程序的实施方式很不安全。具体来说,这种实施方式会忽略所有 SSL 证书验证错误,从而使您的应用容易受到中间人攻击。攻击者可能会更改受影响的 WebView 内容、读取传输的数据(例如登录凭据),以及执行应用中使用 JavaScript 的代码。

为了正确处理 SSL 证书验证,请将您的代码更改为在服务器提供的证书符合您的预期时调用 SslErrorHandler.proceed(),否则应调用SslErrorHandler.cancel()。系统已向您的开发者帐号地址发送了一封电子邮件提醒,其中列出了受影响的应用和类。

所以查阅了相关Webview上的访问ssl协议的网址的警告处理方式。

其实大概意思就是说客户端在处理https链接返回的ssl错误的时候不要无脑的直接通过,需要友好的在客户端主动弹出对话框让用户做出选择。

然后添加代码如下:

public void onReceivedSslError(WebView view,final SslErrorHandler handler,
  SslError error) {
      final AlertDialog.Builder builder = new AlertDialog.Builder(WebViewActivity.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;
        case SslError.SSL_DATE_INVALID:
          message = "The date of the certificate is invalid";
          break;
        case SslError.SSL_INVALID:
        default:
          message = "A generic error occurred";
          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();
 }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Android开发实现的ViewPager引导页功能(动态加载指示器)详解

    Android开发实现的ViewPager引导页功能(动态加载指示器)详解

    这篇文章主要介绍了Android开发实现的ViewPager引导页功能(动态加载指示器),结合实例形式详细分析了Android使用ViewPager引导页的具体步骤,相关布局、功能使用技巧,需要的朋友可以参考下
    2017-11-11
  • Android实现图片文字识别

    Android实现图片文字识别

    这篇文章主要为大家详细介绍了Android实现图片文字识别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • react native android6+拍照闪退或重启的解决方案

    react native android6+拍照闪退或重启的解决方案

    android 6+权限使用的时候需要动态申请,那么在使用rn的时候要怎么处理拍照权限问题呢?本文提供的是一揽子rn操作相册、拍照的解决方案,需要的朋友可以参考下
    2017-11-11
  • Android ArrayMap源代码分析

    Android ArrayMap源代码分析

    这篇文章主要介绍了Android ArrayMap源代码分析的相关资料,需要的朋友可以参考下
    2016-10-10
  • Android实战RecyclerView头部尾部添加方法示例

    Android实战RecyclerView头部尾部添加方法示例

    本篇文章主要介绍了Android实战RecyclerView头部尾部添加方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Android9.0上针对Toast的特殊处理图文详解

    Android9.0上针对Toast的特殊处理图文详解

    这篇文章主要给大家介绍了关于Android9.0上针对Toast的特殊处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Android中Intent传递对象的两种方法Serializable,Parcelable

    Android中Intent传递对象的两种方法Serializable,Parcelable

    这篇文章主要介绍了Android中的传递有两个方法,一个是Serializable,另一个是Parcelable,对intent传递对象的两种方法感兴趣的朋友一起学习吧
    2016-01-01
  • Android中Service和Activity相互通信示例代码

    Android中Service和Activity相互通信示例代码

    在android中Activity负责前台界面展示,service负责后台的需要长期运行的任务。下面这篇文章主要给大家介绍了关于Android中Service和Activity相互通信的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • android实现点击按钮控制图片切换

    android实现点击按钮控制图片切换

    这篇文章主要为大家详细介绍了android实现点击按钮控制图片切换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • Android5.0 旋转菜单实例详解

    Android5.0 旋转菜单实例详解

    这篇文章主要介绍了 Android5.0 旋转菜单的相关资料,非常不错,具有参考借鉴价值,需要的朋友参考下
    2016-12-12

最新评论