我正在处理代码的日志伪造问题:
log.error(“Request:”+ req.getRequestURL()+“raise”+ exception);
此元素的值(req.getRequestURL())在没有正确的情况下流经代码 已清理或验证,最终用于编写handleError
中的审计日志我尝试删除\ n \ r \ n字符,但没有成功。
我经历了不同的网站搜索相同但没有找到有用的内容。 任何人都可以为此解释解决方案或解决它的小指南。
谢谢
答案 0 :(得分:0)
使用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)";
}
}