2016-02-05 36 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

非常感谢 –