본문 바로가기
IT 자료

부적절한 예외처리

by 성곤 2015. 11. 23.
반응형


감리 보안 점검에서 '부적절한 예외처리' 보안 약점이 나왔다.



try catch 문에서 catch (Exception e) 예외처리를 하는 건데, 어찌해야될지 몰라서 구글링과 발만 동동 굴리고 있었다.


하나하나 모두 예외에 따라서 분석 및 처리할 시간은 없다.


다행히도 지금으로부터 4년전 (2011년) 보안점검에 걸려서 누군가 후속조치를 한 소스코드를 발견했다.


물론, 후속조치한 소스코드가 맞는지는 모르겠지만 이게 맞을 것 같다라는 생각에 글을 남겨본다.


일단, 예외처리에 뭔가를 써줘야 감사를 넘어갈 수 있기 때문이다.... 그 방법 중에 하나가 그냥 로그를 남기는 방법.




일단, lo4j.Logger를 임포트 해준다. (드래그할 수 있어요.)


import org.apache.log4j.Logger;



그리고 catch (Exception e)문에 로그를 써준다.


/* 방법1 */

Logger.getLogger(클래스명.class).debug("IGNORED: " + e.getMessage());



/* 방법2 */

private static final Logger logger = Logger.getLogger(클래스명.class);


logger.debug("IGNORED: "+ e.getMessage() );



운영서버에 올라가는 코드에는 프린트문을 쓰면 안된다.

왜냐면, 감리 지적사항으로 나오기 때문!!!


자세한 설명으로

전자정부프레임워크 설명서(?)에 보면 이러한 문구가 있다.


Logging은 시스템의 개발이나 운용시 발생할 수 있는 사항에 대해서, 시스템의 외부 저장소에 기록하여, 시스템의 상황을 쉽게 파악할 수 있도록 도와준다. 많은 개발자가 Log을 출력하기 위해 일반적으로 사용하는 방식은 System.out.println()이다. 하지만 이 방식은 간편한 반면에 다음과 같은 이유로 권장하지 않는다.


1. 콘솔 로그를 출력 파일로 리다이렉트 할 지라도, 어플리케이션 서버가 재 시작할 때 파일이 overwrite될 수도 있음.

2. 개발/테스팅 시점에만 System.out.println()을 사용하고 운영으로 이관하기 전에 삭제하는 것은 좋은 방법이 아님.

3. System.out.println() 호출은 디스크 I/O동안 동기화(synchronized)처리가 되므로 시스템의 throughput을 떨어뜨림.

4. 기본적으로 stack trace 결과는 콘솔에 남는다. 하지만 시스템 운영 중 콘솔을 통해 Exception을 추적하는 것은 바람직하지 못함.





이러이러한 이유들 때문에, log4j를 전자정부프레임워크에서 사용하는 것을 권장한다.





반응형

'IT 자료' 카테고리의 다른 글

윈도우8 설치 지금은 연결할 수 없습니다  (0) 2015.12.20
널포인트 역참조 조치하기  (0) 2015.12.02
DB2 PK 생성 및 삭제  (0) 2015.11.11
이클립스 글꼴  (0) 2015.09.03
DB2 한글 length 확인하기  (0) 2015.08.20