0

我能够构建发布 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);

构建.gradle:

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

谷歌播放拒绝错误信息:

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

2 回答 2

0

您的代码正在禁用 SSL 主机名验证,引用截图中链接的帮助中心文章,

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

这是一个安全漏洞——正如 CommonsWare 所指出的,您应该删除问题中的所有代码。如果您这样做是因为您之前遇到过 SSL 验证错误,那么这里有一些 SSL 验证的常见问题以及有关如何修复这些问题的信息。

于 2020-01-15T01:29:43.243 回答
-1

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

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

于 2020-01-14T10:52:06.053 回答