来自 Google Play 商店的 Android React Native App HostNameVerifier 错误
Posted
技术标签:
【中文标题】来自 Google Play 商店的 Android React Native App HostNameVerifier 错误【英文标题】:Android React Native App HostNameVerifier Error from Google Play Store 【发布时间】:2021-03-28 16:53:53 【问题描述】:请帮忙,我在 MainApplication.java 文件中有以下实现。我正在检查固定的主机名,然后相应地返回 true 或 false。
错误不安全的主机名验证器
安全性 您的应用正在使用不安全的主机名实现 验证者。有关详细信息,请参阅此 Google 帮助中心文章, 包括修复漏洞的截止日期。
Ld/a/a/a/a/c/e$1; ld/a/a/a/a/c/f$1; sv:deadline:12/10/2020
@Override
public void onCreate()
super.onCreate();
hostnameVerifier();
MobileCore.setApplication(this);
SoLoader.init(this, /* native exopackage */ false);
ReactNativeFirebaseApp.setApplicationContext(this);
private void hostnameVerifier()
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier()
@Override
public boolean verify(String arg0, SSLSession arg1)
String hostList[] = "in.appcenter.ms", "graph.facebook.com",
"assets.adobedtm.com", "codepushupdates.azureedge.net", "app-measurement.com",
"forter.com", "dmn1", "dmn2", "dmn3", "quantummetric.com", "urbanairship.com", "demdex.net", "search.unbxd.io",
"monetate.net", "bazaarvoice.com", "google.com", "stylitics.com", "getcandid.com","braintreegateway.com"
;
for (String host : hostList)
if (host.contains(arg0) || arg0.endsWith(host))
return true;
return false;
);
我应该改变什么,请帮忙。
【问题讨论】:
发布完整的堆栈跟踪/错误消息。顺便说一句,实施不好。使用 HashSet 而不是数组,您可以在 O(1) 上进行检查而不是 O(n)。 感谢您的建议将解决这个问题。完全错误,您的应用正在使用不安全的主机名验证器实现。请参阅此 Google 帮助中心文章了解详细信息,包括修复漏洞的截止日期。 ld/a/a/a/a/c/e$1; ld/a/a/a/a/c/f$1; sv:deadline:12/10/2020 我不确定这是否是原因,但再次查看您的实现是不安全的。页面“mymalwaresite.com/google.com”会通过。至少您应该将字符串解析为 URL 并检查实际主机,而不是执行 .contains() 我尝试通过删除包含使检查非常通用,但即使这样也不起作用,得到完全相同的错误。 public boolean verify(String hostname, SSLSession arg1) if (hostname.equalsIgnoreCase("domain")) return true; 否则 返回假; 【参考方案1】:安全警报是正确的。您的代码将用户置于风险之中,应该被 App Store 拒绝。
您为什么需要这段代码?删除它,只有在您获得有效证书时才连接到服务器。
【讨论】:
【参考方案2】:在 google play 控制台上转到发布管理 -> 选择 apk 版本 -> 安全选项卡。在那里,您将看到该 apk 的安全问题列表以及代码中可能导致该安全问题的类。
如果您没有看到类名,而是在安全警告消息中看到了一些编码代码,请通过禁用您可能使用的任何代码压缩工具来上传另一个构建。就我而言,它是 proguard,我禁用了它并获得了库名称。仅供参考 - 就我而言,图书馆是 Braintree
【讨论】:
以上是关于来自 Google Play 商店的 Android React Native App HostNameVerifier 错误的主要内容,如果未能解决你的问题,请参考以下文章
使用来自 Visual Studio (Xamarin) 的 Google Play 商店签名始终收到“无效客户端”错误