【问题标题】:App rejected by google play due to http trust manager由于 http 信任管理器,应用程序被 Google Play 拒绝
【发布时间】:2020-05-01 01:59:23
【问题描述】:

我能够构建发布 apk,并且经过测试,一切正常。但是,当我将其上传到 Play 商店时,由于某些恶意行为,它被拒绝了。

服务器连接代码:

HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
DefaultHttpClient client = new DefaultHttpClient();

SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
registry.register(new Scheme("https", socketFactory, 443));
SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());

// Set verifier
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);

build.gradle:

implementation 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

Google play 拒绝错误消息:

The app uses software that contains security vulnerabilities for users or allows the collections of user data without proper disclosure.

【问题讨论】:

  • "谁能给我一个确切的解决方案来解决这个问题?" -- 去掉你问题中第一个代码 sn-p 中的所有代码。
  • medium.com/@adith.sudhakar/… 这就是为什么你不应该设置ALLOW_ALL_HOSTNAME_VERIFIER

标签: android google-play ssl-certificate release trustmanager


【解决方案1】:

尝试在您的代码中搜索“TrustManager”,如果没有找到,大多数情况是因为包含第三方库。

可能是因为在你的 gradle 中使用了旧版本的任何库

【讨论】:

    【解决方案2】:

    您的代码正在禁用 SSL 主机名验证,引用屏幕截图中链接的 Help Center article

    在与远程主机建立 HTTPS 连接时忽略所有 SSL 证书验证错误,从而使您的应用容易受到中间人攻击。攻击者可以读取传输的数据(例如登录凭据),甚至更改通过 HTTPS 连接传输的数据。

    这是一个安全漏洞 - 正如 CommonsWare 所指出的,您应该删除问题中的所有代码。如果您这样做是因为之前遇到 SSL 验证错误,here 是 SSL 验证的一些常见问题,并提供了有关如何解决这些问题的信息。

    【讨论】:

      猜你喜欢
      • 2020-08-03
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多