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

首頁 > 系統 > Android > 正文

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

2019-12-12 03:36:17
字體:
來源:轉載
供稿:網友

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(); }

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜都市| 育儿| 六枝特区| 宣汉县| 玉溪市| 青铜峡市| 东安县| 沛县| 云梦县| 台江县| 梁山县| 那坡县| 贵港市| 万盛区| 封丘县| 长宁区| 蒙自县| 梓潼县| 农安县| 札达县| 禹城市| 沙雅县| 嘉峪关市| 丹东市| 甘泉县| 延寿县| 湘潭县| 淮阳县| 昌黎县| 彩票| 通江县| 横峰县| 尉氏县| 稻城县| 内乡县| 双城市| 新民市| 泉州市| 崇仁县| 老河口市| 陵川县|