仅通过replaceAll(“\ r”,“_”)通过Veracode CWE 117(日志不正确的输出中和)。replaceAll(“\ n”,“_”)

问题描述:

我在某些论坛上看到这样的神话:通过做这样的事情来通过Veracode CWE 117(日志不正确的输出中和)问题。 有人可以证实这是否是这种情况?仅通过replaceAll(“ r”,“_”)通过Veracode CWE 117(日志不正确的输出中和)。replaceAll(“ n”,“_”)

message.replaceAll("\r", "_").replaceAll("\n", "_"); 

从这个话题How to fix Veracode CWE 117 (Improper Output Neutralization for Logs) ,我知道我需要做这样的事情

ESAPI.encoder().encodeForHTML(message); 

需要转义,这就是它在上下文中的消息,该ESAPI记录器并更换\r\n个字符以及如果配置为HTML编码。

目前这段代码给了我一个CWE 117 Veracode的:

log.log(Level.WARNING, System.getenv("unsafe")); 

此代码不:

log.log(Level.WARNING, ESAPI.encoder().encodeForHTML(System.getenv("unsafe"))); 

encodeForHTML分别编码\r\n
,但下划线是恕我直言更清洁,如果你解码的HTML你可能会得到意想不到的新线。

+0

您是否知道ESAPI是否有替代方案来通过来自Veracode的CWE 117测试? –

+0

我自己并没有使用任何东西,但是您可以在以下Veracode帮助中心页面看到已批准清洁剂的完整列表:[支持的清理功能](https://help.veracode.com/reader/4EKhlLSMHm5jC8P8j3XccQ/QSde6PQlbxAPLvVx1K933A) –