2017. 8. 2. 17:34
반응형

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
Posted by seongsland