我在一些论坛上读到一个神话,即通过执行类似这样的操作足以通过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/

10-10 22:30