我在Play商店中的一个应用最近收到了此警报,而我对于停止该警报应采取的措施完全不知所措。请参考this。
我的应用中的场景:
该应用程序中有一个付款网关,但是付款是通过网络视图进行的,我几乎可以肯定,此警报可能是这些网络视图的结果。
Google的见解:
据我搜索,我经常遇到OnReceivedSslError
,甚至警报也清楚地表明我可以正确处理该方法。但是我完全迷路了,因为我一开始还没有实现那种方法。
深入的浏览使我进入诸如this,this和this 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();
}
});
}