我在某些论坛上阅读了一个神话,即通过执行类似的操作来传递Veracode CWE 117(对日志的输出中和不正确)。有人可以确认是否是这种情况吗?
message.replaceAll("r", "_").replaceAll("n", "_");
在此主题中如何修复Veracode CWE 117(对日志的输出中和不正确),我知道我需要做这样的事情
ESAPI.encoder().encodeForHTML(message);
您可以使用 stringscapeutils 的方法通过Veracode中的CWE-117。我能够通过2.6 Commons-lang https://mvnrepository.com/artifact/commons-lang/commons-lang/2.6
通过CWE-177。StringEscapeUtils.escapeJava(message)
需要在其所处的上下文中逃脱消息。ESAPILOGGER确实替换了r
和n
字符,并为HTML编码。
目前,此代码为我提供了VeraCode的CWE 117:
log.log(Level.WARNING, System.getenv("unsafe"));
此代码没有:
log.log(Level.WARNING, ESAPI.encoder().encodeForHTML(System.getenv("unsafe")));
encodeforhtml分别编码r
和n
分别为
和

,但是下划线是IMHO清洁器,如果您解码HTML,则可能会获得意外的新行。
如果您不想直接使用esapi,则可以编写自己的功能,从而可以做类似的事情:
- 逃脱新线条和
- 编码HTML。
我在此处给出了此类功能(基于ESAPI)的示例:安全缺陷 - VeraCode报告-CRLF注入
我们可以。
message.replaceAll("r", "_").replaceAll("n", "_");
或
ESAPI.encoder().encodeForHTML(message);
或
HtmlUtils.htmlEscape(input)