国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Webview上的ssl warning的處理方式詳解及實例

2019-10-23 19:45:07
字體:
來源:轉載
供稿:網友

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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平塘县| 长岛县| 灵武市| 安徽省| 镇安县| 武安市| 中西区| 玉林市| 衡水市| 皋兰县| 揭东县| 剑河县| 绥阳县| 永靖县| 宜良县| 德令哈市| 建平县| 阿巴嘎旗| 石城县| 宣恩县| 茌平县| 抚远县| 图木舒克市| 大悟县| 五原县| 密云县| 衡南县| 大荔县| 新郑市| 桂平市| 安阳市| 绥宁县| 津市市| 包头市| 西和县| 阳信县| 芒康县| 灵宝市| 汨罗市| 宣恩县| 阳东县|