我正在努力理解并解决为什么我的应用程序被拒绝我知道它是关于SSL的,但我似乎无法找到导致它的依赖项。 我正在使用下一个设置:
任何帮助都将不胜感激。
更新: 这来自警报部分
安全警报
您的应用程序具有WebViewClient.onReceivedSslError处理程序的不安全实现。具体来说,该实现忽略了所有SSL证书验证错误,使您的应用程序容易受到中间人攻击。攻击者可以使用JavaScript更改受影响的WebView内容,读取传输的数据(例如登录凭据),以及在应用程序内部执行代码。 要正确处理SSL证书验证,只要服务器提供的证书符合您的期望,就更改代码以调用SslErrorHandler.proceed(),否则调用SslErrorHandler.cancel()。包含受影响的应用和类别的电子邮件警报已发送到您的开发者帐户地址。 请尽快解决此漏洞并增加已升级APK的版本号。有关SSL错误处理程序的更多信息,请参阅开发人员帮助中心中的文档。对于其他技术问题,您可以发布到https://www.stackoverflow.com/questions并使用标签“android-security”和“SslErrorHandler。”如果您使用的是负责此操作的第三方库,请通知第三方并与他们合作解决这个问题。 要确认您已正确升级,请将更新后的版本上传到开发者控制台,并在五小时后再回来查看。如果应用尚未正确升级,我们将显示警告。 请注意,虽然这些特定问题可能不会影响使用WebView SSL的每个应用程序,但最好保持所有安全补丁的最新状态。如果应用程序存在漏洞,导致用户面临泄密风险,则可能会被视为违反了我们的恶意行为政策和开发者分发协议第4.4节。 请确保发布的所有应用均符合开发者分发协议和开发者计划政策。如果您有任何疑问或疑虑,请通过Google Play开发者帮助中心与我们的支持小组联系。 影响APK版本2.
答案 0 :(得分:1)
您需要更新您的webViewClient处理程序,如下所述。如果您的应用程序中没有将webview与onReceivedSslError()一起使用,那么请根据Google的新安全策略检查您是否使用了SDKs最新版本来获取更新版本。
要正确处理SSL证书验证,只要服务器提供的证书符合您的期望,就更改您的代码以调用SslErrorHandler.proceed(),否则调用SslErrorHandler.cancel()。
例如,我添加了一个警告对话框,以便用户确认并且Google似乎不再显示警告。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
String message = "SSL Certificate error.";
switch (error.getPrimaryError()) {
case SslError.SSL_UNTRUSTED:
message = "The certificate authority is not trusted.";
break;
case SslError.SSL_EXPIRED:
message = "The certificate has expired.";
break;
case SslError.SSL_IDMISMATCH:
message = "The certificate Hostname mismatch.";
break;
case SslError.SSL_NOTYETVALID:
message = "The certificate is not yet valid.";
break;
}
message += " Do you want to continue anyway?";
builder.setTitle("SSL Certificate Error");
builder.setMessage(message);
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();
}
更改后,它不会显示警告。
答案 1 :(得分:1)
更新版本修复后问题是BackEndless。