Secure Coding Guide | 시스템 데이터 정보 노출


정의

사용자가 볼 수 있는 오류메시지나 스택 정보에 시스템 내부 데이터나 디버깅 관련 정보가 공개되는 보안 약점이다.

영향

예외가 발생한 상황에서의 스택에 대한 상세정보가 사용자에게 노출된다.

조치 방법

오류 처리가 제대로 이루어지지 않은 경우 발생한다.

안전하지 않은 코드의 예

...
public void foo() {
    try {
        go();
    } catch(IOException e) {
        out.println(e.getMessage());
    }
}
...

예외 발생시 out.println(e.getMessage())를 통해 오류와 관련된 시스템 에러 정 보 등 민감한 정보가 유출된다.

안전한 코드의 예

...
public void foo() {
    try {
        go();
    } catch(IOException e) {
        System.err.println("IOException Occurred");
    }
}
...

프로그램 사용자가 볼 수 있는 오류 메시지 정보를 생성하지 않음으로써 공격의 빌미가 될 수 있는 오류와 관련된 정보는 보여주지 않도록 한다.

WAS 설정을 통해 HTTP 에러 처리

HTTP 에러 설정

<!-- error 페이지 -->
<error-page>
  <error-code>400</error-code>
  <location>/WEB-INF/jsp/error/400error.jsp</location>
</error-page>
<error-page>
  <error-code>404</error-code>
	  <location>/WEB-INF/jsp/error/404error.jsp</location>
 </error-page>
<error-page>
    <error-code>403</error-code>
    <location>/WEB-INF/jsp/error/403error.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/jsp/error/500error.jsp</location>
</error-page>

에러 페이지 처리를 서블릿에서 처리하기 위해 web.xml 에서 처리하도록 하기도 한다.