2016-02-05 160 views
11

我最近收到一封來自Google的電子郵件,內容如下:「Google Play警告:SSL錯誤處理程序漏洞」。在此電子郵件中,Google解釋說我的應用程序有一個[「不安全的WebViewClient實現,onReceivedSslError處理程序。具體來說,該實現會忽略所有SSL證書驗證錯誤,使您的應用程序容易受到中間人攻擊。攻擊者可以更改受影響的WebView的內容,讀取傳輸的數據(例如登錄憑據),並使用JavaScript在應用程序內執行代碼。「] ....................Google Play警告:WebViewClient.onReceivedSslError處理程序

我用我的代碼:

webView.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {} 

     @Override 
     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
      handler.proceed(); 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return super.shouldOverrideUrlLoading(view, url); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      // My code 
     } 
    }); 

//我的代碼

webview_ClientPost(webView, "https://secure.payu.in/_payment", mapParams.entrySet()); 

爲什麼Google play會發送SSL警告?這是我的代碼問題還是PayUMoney問題?

+0

那是什麼觸發這個問題您的操作系統版本?我也面臨着同樣的問題,人們建議我做你所做的事情......我很困惑...... – San

+0

它解決了 http://stackoverflow.com/questions/36050741/webview-avoid-security-alert- from-google-play-on-on-on-on-onreceiveds – BeyazBaron

回答

-1

問題出在您的代碼中。當你打電話給handler.proceed();時,它可以有效地消除連接中的所有安全問題。

您應該刪除您的onReceivedSslError方法。默認實現將拒絕不安全的連接。

+0

此解決方案是否適合您?我在Google控制檯中收到了相同的提醒。 – YuDroid

3

我希望對此沒有太晚..那警告是關於你應該通知用戶會去一個無效證書的頁面,你不應該直接進行。

可以implment一個警告對話框是這樣的:

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

這是從sakiM答案在這個環節上採取:Webview avoid security alert from google play upon implementation of onReceivedSslError

+1

非常感謝 –