WebViewClient.OnReceivedSlerror处理程序的Android不安全实现

WebViewClient.OnReceivedSlerror处理程序的Android不安全实现,android,webview,paytm,Android,Webview,Paytm,我们正在使用WebView在我们的应用程序中加载paytm支付页面。在这个过程中,我们遇到了Ssl证书错误。为了处理这个问题,我们在代码中添加了SslErrorHandler.procedure()。一切正常。我尝试将此apk发布到商店,但应用程序被拒绝 WebViewClient.OnReceivedSlerror处理程序的不安全实现 这是我的密码 fcweb.getSettings().setJavaScriptEnabled(true); fcweb.getSettings

我们正在使用WebView在我们的应用程序中加载paytm支付页面。在这个过程中,我们遇到了Ssl证书错误。为了处理这个问题,我们在代码中添加了SslErrorHandler.procedure()。一切正常。我尝试将此apk发布到商店,但应用程序被拒绝

WebViewClient.OnReceivedSlerror处理程序的不安全实现

这是我的密码

    fcweb.getSettings().setJavaScriptEnabled(true);
    fcweb.getSettings().setDomStorageEnabled(true);
    fcweb.setLongClickable(false);
    fcweb.setHapticFeedbackEnabled(false);
    CookieManager.getInstance().setAcceptCookie(true);
    fcweb.setWebViewClient(new WebViewClient(){

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed(); // Ignore SSL certificate errors
            L.d("SSL Error received");

        }

    });
注意:我不想显示任何有关错误的警报对话框。
我应该怎么做才能解决这个问题呢?

并不总是强制处理程序。继续();但是您还必须包括handler.cancel();因此,用户可以避免加载不安全的内容。

若要正确处理SSL证书验证,请更改代码以在服务器提供的证书满足您的期望时调用SslErrorHandler.continue(),否则调用SslErrorHandler.cancel()

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

可能重复@ShubhamShukla感谢您的回复。我看到了这个链接,但是显示一个警告对话框会产生不良影响。如果用户看到此类警告,他们将不会继续。但这是必要的,这样您就不会让用户面临各种风险。显示此类警告将对用户体验造成不良影响。如果用户看到安全错误之类的警报,他们可能不会继续。查看我对问题的评论我认为这不是一个好主意,但它会在发布应用程序时解决警告吗?@SureshKumar yes Sir如果我使用sslerror.getCertificate().getIssuedTo().getCName()检查此项,它会接受吗?如果此名称等于某个特定的名称处理程序。继续()或其他处理程序。取消()。