gpt4 book ai didi

java - Spring 启动中使用的System.getenv()在sonarQube中显示为安全漏洞

转载 作者:行者123 更新时间:2023-12-01 14:27:14 26 4
gpt4 key购买 nike

我的spring boot应用程序中有一个方法,该方法从系统环境变量中获取数据,该方法按预期工作,但sonarQube表示“请确保此处安全使用环境变量”,
我试图找到一种替代方法来解决此问题,但找不到解决方案,方法如下:

如何处理此安全性问题,除了从环境变量中获取值外,我无法使用其他任何东西。

public Map<String, Object> getConfigurations() {
Map<String, Object> result = new HashMap<>();
HttpResponse response = null;
try {
String xVaultToken = System.getenv("XVaultToken");
String cityAppConfig = System.getenv("CityApp_Config");

@SuppressWarnings("deprecation")
HttpClient client = HttpClients.custom().setSSLHostnameVerifier(new NoopHostnameVerifier())
.setSslcontext(
new SSLContextBuilder().loadTrustMaterial(null, (x509Certificates, s) -> true).build())
.build();
Map<String, Object> headerDatas = new HashMap<>();
headerDatas.put("Content-Type", "application/json");
headerDatas.put("X-Vault-Token", xVaultToken);
HttpGet get = new HttpGet(cityAppConfig);
Set<String> keys = headerDatas.keySet();
for (String key : keys) {
get.setHeader(key, headerDatas.get(key).toString());
}
response = client.execute(get);
try(BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()))){
String responseData = rd.readLine();
result.put(Constants.RESPONSE, responseData);
}
int statusCode = response.getStatusLine().getStatusCode();
result.put(Constants.STATUS, statusCode);

} catch (Exception e) {
logger.info("error is local settings getConfigurations" + e);
}
return result;
}

}

最佳答案

免责声明!!!
首先,正如我在评论中提到的那样,如果有人要求您阅读ENV变量,但又说您不能将SonarQube警告标记为假阳性:(有礼貌地)告诉他们他们必须生存该SonarQube警告。
但是,如果出于某种原因而不是一种选择,我将向您展示两种可能不会在SonarQube中触发警告的方法,这些方法比为此目的调用cmd.exe仍然要冗长得多。
例子1
通过java.util.function.Function调用函数

private static String getenv(String variable) {
return ((Function<String, String>) System::getenv).apply(variable);
}
例子2
通过反射调用函数
    private static String getenv(String variable) {
try {
return (String) System.class.getMethod("getenv", String.class).invoke(null, variable);
} catch (ReflectiveOperationException e) {
throw new RuntimeException(e);
}
}

关于java - Spring 启动中使用的System.getenv()在sonarQube中显示为安全漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61958612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com