我在一些论坛上读到一个神话,即通过执行类似这样的操作足以通过Veracode CWE 117(日志的输出不正确中和)问题。
有人可以确认是否是这种情况吗?
message.replaceAll("\r", "_").replaceAll("\n", "_");
在此主题中How to fix Veracode CWE 117 (Improper Output Neutralization for Logs)
,我知道我需要做这样的事情
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进行解码,则可能会得到意想不到的新行。关于java - 仅使用replaceAll(“\r”,“_”)。replaceAll(“\n”,“_”)通过Veracode CWE 117(日志的不正确输出中和),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46564555/