- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有下面的java类,它检查instance
是否不为空并且匹配dev
/qa
/stg
/staging
/prod
和 hostnameVerification
为 true
,然后 getHostnameVerifierForInstance
返回自定义的 主机名 validator
public class SSLConfig {
private static final String PROD_INSTANCE = "Prod";
private static final String STG_INSTANCE1 = "Staging";
private static final String STG_INSTANCE2 = "Stg";
private static final String QA_INSTANCE = "QA";
private static final String DEV_INSTANCE = "DEV";
private static HostnameVerifier getHostnameVerifierForInstance(String instance, String hostnameVerification) {
LOGGER.info("HostnameVerifier For Instance = {}, hostnameVerification = {}",instance,hostnameVerification);
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
if(StringUtils.isNotBlank(instance)) {
if ((instance.trim().toLowerCase().startsWith(PROD_INSTANCE.toLowerCase()) || instance.trim().toLowerCase().startsWith(STG_INSTANCE1.toLowerCase()) || instance.trim().toLowerCase().startsWith(STG_INSTANCE2.toLowerCase()) || instance.trim().toLowerCase().startsWith(QA_INSTANCE.toLowerCase()) || instance.trim().toLowerCase().startsWith(DEV_INSTANCE.toLowerCase())) && StringUtils.isNotBlank(hostnameVerification) && hostnameVerification.trim().toLowerCase().equalsIgnoreCase("true")) {
hostnameVerifier = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
DefaultHostnameVerifier verifier = new DefaultHostnameVerifier();
return verifier.verify(hostname, session);
}
};
}
}
return hostnameVerifier;
}
}
我想知道这个方法可以重构/改进为更好的版本吗?
最佳答案
重构后的代码应该是这样的:
public class SSLConfig {
private static final String PROD_INSTANCE = "Prod";
private static final String STG_INSTANCE1 = "Staging";
private static final String STG_INSTANCE2 = "Stg";
private static final String QA_INSTANCE = "QA";
private static final String DEV_INSTANCE = "DEV";
private static HostnameVerifier getHostnameVerifierForInstance(String instance,
String enabled){
return Boolean.parseBoolean(enabled)&&reject(instance) ? denyAll()
: permitAll();
}
private static boolean reject(String instance) {
return rejections().anyMatch(instance.trim().toLowerCase()::startsWith);
}
private static Stream<String> rejections() {
return Stream.of(PROD_INSTANCE, STG_INSTANCE1,
STG_INSTANCE2, QA_INSTANCE, DEV_INSTANCE).map(String::toLowerCase);
}
private static HostnameVerifier denyAll() {
return (hostname, session) -> false;
}
private static HostnameVerifier permitAll() {
return (hostname, session) -> true;
}
}
关于java - 重构/优化 Java 代码以获取 HostNameVerifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43644054/
我正尝试在 google play 中发布我的应用程序并从 Google Play 收到此消息。 我们拒绝了您的应用程序,包名称为 xxx.xxx.xxx.xxx,因为它违反了我们的恶意行为或用户数据
我有问题,需要社区的帮助。现在 Google data protection 发生了变化我在 Google Developer Console 中收到警告。 Security warning Your
3 月 1 日之后,当我将我的应用程序上传到测试组时,我收到了来自 Google 的特定邮件,其中引用了: This information is intended for developers wi
提交到 Google Play 商店后,我收到一封电子邮件通知,告诉我我的 APK 正在使用 HostnameVerifier 接口(interface)的不安全实现。 我根本找不到在代码中使用 Ho
我在提交我的应用程序时遇到了问题。我已经完成了如下的 Volley 设置,但 Play 商店显示为拒绝。 主机名验证器 您的应用正在使用 HostnameVerifier 接口(interface)的
在什么情况下会在 Java 中使用 HostnameVerifier 而不是 TrustManager?一个比另一个推荐吗?查看 Java 文档(Interface HostnameVerifier
我正在使用 Koushik Dutta 的 Ion Android 的网络库。出于调试目的,我需要覆盖 SSL 检查。我发现了如何使用以下方法设置我自己的 SSL 上下文和 TrustManager:
我正在为我的 SSL 客户端实现一个主机名 validator 。我知道 HTTPS URL 连接的默认主机名 validator 是静态的。我的问题是我不希望主机名验证是静态的,因为我的客户端中有多
在我们的应用程序中,我们通过 HTTPS 对 auth 服务进行 HTTP 调用。我需要确保我们进行了所有必要的检查以确保连接安全。作为其中的一部分,我必须执行以下操作: 验证授权服务器的证书是否由知
在 one of the rules SonarQube 不允许使用假人 HostnameVerifier盲目接受每个主机: Client client = ClientBuilder.newBuil
Play 商店拒绝应用的原因: Your app(s) are using an unsafe implementation of the HostnameVerifier interface. Yo
我有下面的java类,它检查instance是否不为空并且匹配dev/qa/stg/staging/prod 和 hostnameVerification 为 true,然后 getHostnameV
我有一个从 HostnameVerifier 实现的自定义验证方法。 @Override public boolean verify(String hostname, SSLSession sessi
我收到来自 Google 的通知说:安全警报 您的应用使用了不安全的 HostnameVerifier 实现。请参阅这篇 Google 帮助中心文章了解详细信息,包括修复漏洞的截止日期。 是否有人收到
当我尝试向 AWS EC2 实例发出某些请求时,收到错误“无法分配连接,因为主机名验证程序 PgjdbcHostnameVerifier 无法验证 my_dns_of_postgresql_datab
我正在使用 DashO 6.10.1 进行 war 混淆,在此过程中,我在运行 obfuscate.xml 时遇到以下错误。 错误: com.preemptive.dasho.DashOClassNo
我收到以下错误, Security alert Your app is using an unsafe implementation ofHostnameVerifier. Please see th
最近我的一个应用收到了来自 Google Play 的安全警报,如下所示。 您的应用使用了不安全的 HostnameVerifier 实现.并引用链接 Google Play Help Center有
我们正在编写一个应连接到不同 LDAP 服务器的应用程序。对于每个服务器,我们可能只接受特定的证书。该证书中的主机名无关紧要。这很容易,当我们使用 LDAP 和 STARTTLS 时,因为我们可以使用
这个问题在这里已经有了答案: how to fix hostname verifier interface while uploading app to google play console (2
我是一名优秀的程序员,十分优秀!