仅通过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你可能会得到意想不到的新线。
您是否知道ESAPI是否有替代方案来通过来自Veracode的CWE 117测试? –
我自己并没有使用任何东西,但是您可以在以下Veracode帮助中心页面看到已批准清洁剂的完整列表:[支持的清理功能](https://help.veracode.com/reader/4EKhlLSMHm5jC8P8j3XccQ/QSde6PQlbxAPLvVx1K933A) –