0. 개요
시스템, 관리자, DB정보 등 시스템의 내부 데이터가 공개되면, 공격자에게 또 다른 공격의 빌미를 제공하게 된다.
1. 보안 대책
- 예외 상황이 발생할 때 시스템의 내부 정보가 화면에 출력되지 않도록 개발한다.
- getMessage() 메서드의 사용을 제한한다.
: Exception 발생 시 오류와 관련된 정보가 노출될 수 있기 때문.
2. 진단 방법
- 시스템 정보 출력 코드가 존재하는지 확인한다.
3. 코드 예시
# 1 - 제거되지 않고 남은 디버그 코드 - 안전하지 않은 코드 예시(JAVA)
예외 발생 시 getMessage()를 이용한 오류메시지를 통해 오류와 관련된 시스템 정보 등 민감한 정보가 유출될 수 있다.
* e.getMessage() : 자바에서 전달한 인스턴스의 메소드 중 getMessage를 호출하는 코드로
getMessage는 오류의 원인을 사람이 이해하기 쉬운 형태로 리턴한다.
- 오류메세지의 자세함의 정도 : e.getMessage < e.toString < e.printStackTrace
가급적이면 공격의 빌미가 될 수 있는 오류와 관련된 상세한 정보는
사용자에게 노출되지 않도록 최소한의 정보만을 제공하자.
# 1 + 제거되지 않고 남은 디버그 코드 - 안전한 코드 예시(JAVA)
* logger.error // 에러가 났다는 최소한의 표시만 남기는 로그
#. 참고 블로그
https://prokyhsigma.tistory.com/80?category=848515
'about Security > SECURE CODING' 카테고리의 다른 글
[캡슐화] Private 배열에 Public 데이터 할당 (5등급) (0) | 2021.08.10 |
---|---|
[캡슐화] Public 메소드부터 반환된 Private 배열 (5등급) (0) | 2021.08.10 |
[보안기능] 사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출 (5등급) (0) | 2021.08.10 |
[에러처리] 부적절한 예외 처리 (5등급) (0) | 2021.08.10 |
[보안기능] 주석문 안에 포함된 시스템 주요 정보 (5등급) (0) | 2021.08.10 |
댓글