应用已被Google Play拒绝

时间:2017-02-18 06:55:27

标签: android ssl

开发包含社交网络登录的Android应用程序。 在这个问题之后,我删除了包含" WebViewClient.onReceivedSslError"的类。 但是当我在Google Play商店中上传应用时,它被拒绝,并出现以下错误。

"如何解决应用中的WebView SSL错误处理程序警报。"

我还使用该类在没有Intent的情况下在后台发送邮件。 这使用" SSL"和" TrustManagerFactory.X509"。这是拒绝的原因吗? 我想如果这是拒绝的原因,那么我可能会得到另一个错误,例如" 由于X509TrustManager的不安全实施而导致应用被Google Play商店拒绝。

寻求支持。提前谢谢。

这是我从Google Play收到的消息。

Hello Google Play Hello,

我们拒绝了VISApp,包名为com.avonmobility.visapp,因为它违反了我们的恶意行为或用户数据政策。如果您提交了更新,那么您之前的应用版本仍可在Google Play上使用。

此应用使用包含用户安全漏洞的软件,或允许在没有正确披露的情况下收集用户数据。

以下是您最近提交时检测到的问题列表和相应的APK版本。请尽快升级您的应用并增加已升级的APK的版本号。

漏洞APK版本 SSL错误处理程序 有关如何处理WebView SSL错误处理程序警报的详细信息,请参阅此Google帮助中心文章。

15 要确认您已正确升级,请将应用的更新版本提交给开发者控制台,并在五小时后再回来查看警告消失。

虽然这些漏洞可能不会影响使用此软件的每个应用程序,但最好是及时了解所有安全补丁程序。请确保更新应用中存在已知安全问题的所有库,即使您不确定问题是否与您的应用相关。

应用还必须遵守开发者分发协议和开发者计划政策。

如果您认为我们错误地做出了这一决定,请与我们的开发者支持团队联系。

最佳,

Google Play团队

3 个答案:

答案 0 :(得分:0)

同样的问题我在你的项目中添加了这个创建一个类。

#include <stdio.h>

int main(int argc, char **argv) {
    char code[1000];
    char output[1000];
    char ch;
    int i = 0;
    //store code in array
    while ((ch = getchar()) != EOF) {
        code[i++] = ch;
    }
    code[i] = '\0';
    int index = 0;
    i = 0;
    //store removed comment code in output
    while (code[i] != EOF) {
        if (code[i] == '/' && code[i + 1] == '/') {        //to remove single line comments
            while (code[i] != '\n')
                i++;
        } else if (code[i] == '/' && code[i + 1] == '*') {  //to remove multi line comments
            i = i + 2;
            while (code[i] != '*' && code[i + 1] != '/') {
                i++;
            }
            i = i + 3;
        } else {           //store the rest of the code in output array
            output[index++] = code[i++];
        }

    }
    output[index] = '\0';
    printf("%s", output);
}

}

答案 1 :(得分:0)

  

解决Google Play警告:WebViewClient.onReceivedSslError处理程序

并非始终强制执行handler.proceed();但你还必须包括handler.cancel();因此用户可以避免加载未说明的内容。

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

使用以下代码

 webView.setWebViewClient(new SSLTolerentWebViewClient());
 webView.loadUrl(myhttps url);

 private class SSLTolerentWebViewClient extends WebViewClient {
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {

    AlertDialog.Builder builder = new AlertDialog.Builder(Tab1Activity.this);
    AlertDialog alertDialog = builder.create();
    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?";
    alertDialog.setTitle("SSL Certificate Error");
    alertDialog.setMessage(message);
    alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // Ignore SSL certificate errors
            handler.proceed();
        }
    });

    alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

            handler.cancel();
        }
    });
    alertDialog.show();
}
}

您必须提醒用户使用SSL,以便Google允许您的应用执行此操作

答案 2 :(得分:0)

I also had SSLCertification issue at the time uploading singed apk.
you have to return true for all your trusted http hosts including 3rd party libraries http.
  

我在这里解决了我是如何解决这个问题的,对不起安全我没有放置链接的原始路径,这些Link帮助我。

     TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
        public X509Certificate[] getAcceptedIssuers() {
            X509Certificate[] myTrustedAnchors = new X509Certificate[0];
            return myTrustedAnchors;
        }

        @Override
        public void checkClientTrusted(X509Certificate[] certs, String authType) {
        }

        @Override
        public void checkServerTrusted(X509Certificate[] certs, String authType) {
        }
      }};
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String hostname, SSLSession arg1) {
                if (hostname.equalsIgnoreCase("demo.mysite.com") ||
                        hostname.equalsIgnoreCase("prod.mysite.com") ||
                        hostname.equalsIgnoreCase("22.2.202.22:3333") ||
                        hostname.equalsIgnoreCase("cloud.cloudDeveSite.net") ||                            
                        hostname.equalsIgnoreCase("11.2.222.22:2222") ||
                        hostname.equalsIgnoreCase("multispidr.3rdPartyLibrary.io")) {
                    return true;
                } else {
                    return false;
                }
            }
        });
  

提到所有出现SSLCertification问题的api,你也必须提到第三方api,你运行该代码时会得到错误的HTTP链接。