我正在处理代码的日志伪造问题:
log.error("请求:" + req.getRequestURL() + " 引发 " + 异常);
该元素的值 (req.getRequestURL()) 流经代码而没有经过适当的清理或验证,最终用于在 handleError 中编写审计日志
我试图删除 \n\r 字符但没有成功。
我已经通过不同的网站搜索相同的内容,但没有找到有用的内容。任何人都可以解释这个解决方案或修复它的小指南。
谢谢
我正在处理代码的日志伪造问题:
log.error("请求:" + req.getRequestURL() + " 引发 " + 异常);
该元素的值 (req.getRequestURL()) 流经代码而没有经过适当的清理或验证,最终用于在 handleError 中编写审计日志
我试图删除 \n\r 字符但没有成功。
我已经通过不同的网站搜索相同的内容,但没有找到有用的内容。任何人都可以解释这个解决方案或修复它的小指南。
谢谢
使用 ESAPI 库来保护日志伪造攻击。代码参考 http://www.jtmelton.com/2010/09/21/preventing-log-forging-in-java/。
String clean = message.replace( '\n', '_' ).replace( '\r', '_' );
if ( ESAPI.securityConfiguration().getLogEncodingRequired() ) {
clean = ESAPI.encoder().encodeForHTML(message);
if (!message.equals(clean)) {
clean += " (Encoded)";
}
}