[英]CRLF Injection vulnerability while using slf4j LOGGER in Veracode (CWE 117)
這是一個 slf4j 記錄器,我一直在嘗試用 2 個消息參數記錄錯誤。
catch(ExecutionException executionException) {
LOGGER.error("TimeoutException caught , Error: " + SSG_TIMEOUT.getErrorText()
+ ". Message: " +executionException.getMessage());
}
SSG_TIMEOUT.getErrorText()
結果為字符串"TimeOut error encountered"
SSG_TIMEOUT.getErrorText()
"TimeOut error encountered"
我用過的東西
手動清理代碼
return entry.replace("\\t", "\\\\t").replace("\\b", "\\\\b").replace("\\n", "\\\\n").replace("\\r", "\\\\r").replace("\\f", "\\\\f").replace("\ ", "\\\\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 中的About Supported Cleansing Functions
因此,對於上述問題StringUtils.normalizeSpace()有效。 也可以使用“StringUtils.escapeJava”,但它似乎已被棄用
索恩:
catch(ExecutionException executionException) {
LOGGER.error("TimeoutException caught , Error: " +
StringUtils.normalizeSpace(SSG_TIMEOUT.getErrorText()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.