log4j를 쓰다가 보안 이슈가 발생됐다.
파라미터를 받아서 로그에 넣을때 해당 파라미터에 문제의 코드가 (\n) 포함되거나 값이 긴경우 문제가 발생될 수 있다는 내용
결국 log4j filter를 이용해서 해당 이슈를 해결했다.
import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;
public class LogFilter extends Filter {
@Override
public int decide(LoggingEvent event) {
// 로그의 길이가 500000 보다 큰 경우 500000까지만 보여준다.
if(event.getRenderedMessage().length() > 500000) {
event.getLogger().log(event.getLevel(), event.getRenderedMessage().substring(0, 500000));
return DENY;
}
// 로그에 \n이 포함된 경우 제거 한다.
if(event.getRenderedMessage().indexOf("\n") > -1) {
event.getLogger().log(event.getLevel(), event.getRenderedMessage().replace("\n", " "));
return DENY;
}
return NEUTRAL;
}
}
<!-- log appender 지정 -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d (%c:%L) - %m%n" />
</layout>
<filter class="[package].LogFilter" />
</appender>
'Jsp-Servlet > Utils' 카테고리의 다른 글
SSL 처리용 Filter (2) | 2011.10.17 |
---|---|
java, jsp ip 가져오기 방법 모음 (1) | 2010.09.13 |
jsp로 구현한 calendar (1) | 2010.04.09 |
google chart sample (3) | 2010.04.07 |