这是一个 slf4j 记录器,我一直在尝试使用 2 个消息参数记录错误。
catch(ExecutionException executionException) {
LOGGER.error("TimeoutException caught , Error: " + SSG_TIMEOUT.getErrorText()
+ ". Message: " +executionException.getMessage());
}
SSG_TIMEOUT.getErrorText()
结果为字符串“遇到超时错误”
我用过的东西
手动清理代码
return entry.replace("\t", "\\t").replace("\b", "\\b").replace("\n", "\\n").replace("\r", "\\r").replace("\f", "\\f").replace("\u0000", "\\0").replace("\\a", "\\a").replace("\\v", "\\v").replace("\\e", "\\e").replaceAll("\\p{Cntrl}", "").replace("'", "\\'").replace("\"", "\\\"").replace("\\", "\\\\");
StringEscapeUtils.escapeJson(String errorMessage)
用于附加字符串的字符串生成器 +
escapeJson(StringBuilder.toString())
我仍然在我的 veracode 报告中看到了这个问题。
有什么建议吗?
最佳答案
首先,前两种清理方法是正确的,只是 Veracode 不支持。
在使用某种方法之前,应访问关于支持的清洁功能 https://help.veracode.com/r/review_cleansers
因此,对于上述问题,StringUtils.normalizeSpace() 有效。 也可以使用“StringUtils.escapeJava”,但似乎已弃用
索恩:
catch(ExecutionException executionException) {
LOGGER.error("TimeoutException caught , Error: " +
StringUtils.normalizeSpace(SSG_TIMEOUT.getErrorText()
}
关于java - 在 Veracode 中使用 slf4j LOGGER 时出现 CRLF 注入(inject)漏洞 (CWE 117),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65086887/