0

我正在处理代码的日志伪造问题:

log.error("请求:" + req.getRequestURL() + " 引发 " + 异常);

该元素的值 (req.getRequestURL()) 流经代码而没有经过适当的清理或验证,最终用于在 handleError 中编写审计日志

我试图删除 \n\r 字符但没有成功。

我已经通过不同的网站搜索相同的内容,但没有找到有用的内容。任何人都可以解释这个解决方案或修复它的小指南。

谢谢

4

1 回答 1

1

使用 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)";
    }
}
于 2016-06-14T09:09:49.313 回答