我在Play商店中的一个应用最近收到了此警报,而我对于停止该警报应采取的措施完全不知所措。请参考this

我的应用中的场景:

该应用程序中有一个付款网关,但是付款是通过网络视图进行的,我几乎可以肯定,此警报可能是这些网络视图的结果。

Google的见解:

据我搜索,我经常遇到OnReceivedSslError,甚至警报也清楚地表明我可以正确处理该方法。但是我完全迷路了,因为我一开始还没有实现那种方法。

深入的浏览使我进入诸如thisthisthis too之类的链接。我在所有链接中发现的共同点是,它们都是指旧版本的android。但是我将minSDK用作14,即Android 4.0及更高版本。所以我又迷路了。而且我认为当我们在Web视图中使用https时会发出此警报。

所以我的问题是


我是怎么突然得到这个问题的?

该应用程序已在Play商店中使用了6个月以上,并且此警报突然消失!绝对不知道发生了什么!
如何重现该问题?

我尝试了许多方法来重现此问题,并且已经实现了here中给出的SSL方法:但是似乎没有任何效果。
这个问题会以任何方式影响我的付款或我的应用程序吗?


如何重现此问题以了解更多信息以及如何停止此警报?

我尝试了什么? :

由于我对较早的android版本存有疑问,因此我用minSDK设计了一个仿真器,但即使这样,我的流程也没有输入该方法。

我的疑问:

可能有一个不太真实的SSL可能触发了此问题吗?

关于此问题的任何想法和见解将大有帮助。提前致谢。我只需要禁用该警报,就这么简单。

最佳答案

使用WebViewClients时,Google似乎已经升级了其安全性检查。在许多情况下(无双关语),开发人员可以解决以下SSL问题:

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


我也遇到了这个问题,似乎Lint尚未实现此检查。因此,很难复制。如果您想知道会发生什么,请创建一个自签名证书,使用该证书设置Web服务器,然后将WebViewClient连接到此“不受信任”的Web服务器。如果您不处理onReceivedSSLError,则会收到一个错误消息,或者在Web视图中什么都不会发生(默认情况下)。
会影响您的付款吗?如果SSL证书不受信任,我想是会的,因为对url / api的请求将被取消。

上面的代码片段只会忽略SSL错误,并可能导致MITM攻击。您是否尝试过拦截请求,警告用户并允许他们选择继续?

例如

        @Override
        public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
            //super.onReceivedSslError(view, handler, error);
            AlertDialog.Builder builder = new AlertDialog.Builder(GroupsActivity.this);
            builder.setTitle("Invalid/Untrusted certificate");
            builder.setMessage("You're accessing a page with an untrusted or invalid certificate. Do you want to continue?");
            builder.setNegativeButton("Cancel", new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    handler.cancel();
                    Toast.makeText(GroupsActivity.this, "Request cancelled", Toast.LENGTH_LONG).show();
                }
            });

            builder.setPositiveButton("Continue", new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    handler.proceed();
                }
            });
        }

10-07 19:40
查看更多