仅使用 replaceAll("\r", "_").replaceAll("\n", "_") 通过 Veracode CWE 117(日志的不正确输出中和)
Pass Veracode CWE 117 (Improper Output Neutralization for Logs) only with replaceAll("\r", "_").replaceAll("\n", "_")
我在一些论坛上读到这样的神话,即通过执行类似的操作就足以通过 Veracode CWE 117(日志的不正确输出中和)问题。
有人可以确认是否是这种情况吗?
message.replaceAll("\r", "_").replaceAll("\n", "_");
来自这个话题
,我知道我需要做这样的事情
ESAPI.encoder().encodeForHTML(message);
消息需要针对它所在的上下文进行转义。ESAPI 记录器会替换 \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
编码为 
和 

,但是下划线更干净,如果你解码 html 你可能得到意外的新行。
如果你不想直接使用 ESAPI,你可以编写自己的函数来做类似的事情:
- 转义新行和
- 编码 html。
我在此处给出了此类函数的示例(基于 ESAPI)作为答案:security flaw - veracode report - crlf injection
我们都可以。
message.replaceAll("\r", "_").replaceAll("\n", "_");
或
ESAPI.encoder().encodeForHTML(message);
或
HtmlUtils.htmlEscape(input)
您可以使用StringEscapeUtils的escapeJava方法在Veracode中传递CWE-117。我能够通过 2.6 的 commons-lang https://mvnrepository.com/artifact/commons-lang/commons-lang/2.6
通过 CWE-177
StringEscapeUtils.escapeJava(message)
我在一些论坛上读到这样的神话,即通过执行类似的操作就足以通过 Veracode CWE 117(日志的不正确输出中和)问题。 有人可以确认是否是这种情况吗?
message.replaceAll("\r", "_").replaceAll("\n", "_");
来自这个话题
ESAPI.encoder().encodeForHTML(message);
消息需要针对它所在的上下文进行转义。ESAPI 记录器会替换 \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
编码为 
和 

,但是下划线更干净,如果你解码 html 你可能得到意外的新行。
如果你不想直接使用 ESAPI,你可以编写自己的函数来做类似的事情:
- 转义新行和
- 编码 html。
我在此处给出了此类函数的示例(基于 ESAPI)作为答案:security flaw - veracode report - crlf injection
我们都可以。
message.replaceAll("\r", "_").replaceAll("\n", "_");
或
ESAPI.encoder().encodeForHTML(message);
或
HtmlUtils.htmlEscape(input)
您可以使用StringEscapeUtils的escapeJava方法在Veracode中传递CWE-117。我能够通过 2.6 的 commons-lang https://mvnrepository.com/artifact/commons-lang/commons-lang/2.6
通过 CWE-177StringEscapeUtils.escapeJava(message)