PR CENTER
뉴스룸 | 자료실
Spring @RestControllerAdvice를 사용하여 서비스 전체에서 발생하는 보안 예외와 유효성 검사 실패를 중앙 집중적으로 처리합니다.
import org.springframework.http.*; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.logging.Logger; @RestControllerAdvice public class GlobalExceptionHandler { private static final Logger LOGGER = Logger.getLogger(GlobalExceptionHandler.class.getName()); // 1. Bean Validation 유효성 검사 실패 처리 (CWE-20) @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity<Map<String, String>> handleValidationExceptions(MethodArgumentNotValidException ex) { Map<String, String> errors = new HashMap<>(); ex.getBindingResult().getFieldErrors().forEach(error -> errors.put(error.getField(), error.getDefaultMessage())); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errors); } // 2. 보안 예외 처리 (경로 조작 시도 등) @ExceptionHandler(SecurityException.class) public ResponseEntity<String> handleSecurityException(SecurityException ex) { LOGGER.severe("[SECURITY ALERT] 비정상적인 접근 감지: " + ex.getMessage()); return ResponseEntity.status(HttpStatus.FORBIDDEN).body("접근 권한이 없거나 부적절한 요청입니다."); } // 3. 기타 모든 알 수 없는 예외 처리 (최후의 보루) @ExceptionHandler(Exception.class) public ResponseEntity<String> handleAllExceptions(Exception ex) { LOGGER.severe("[INTERNAL ERROR] 예상치 못한 오류: " + ex.toString()); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body("서버 내부 오류가 발생했습니다. 관리자에게 문의하세요."); } }
ex.printStackTrace()를 클라이언트에 반환하지 않음으로써 데이터베이스 구조나 서버 내부 경로 누출을 원천 차단합니다. (CWE-209 대응)
ex.printStackTrace()
Java Logging API를 통해 침입 시도(SecurityException)를 기록하여 나중에 감사(Audit) 자료로 활용할 수 있게 합니다.
사용자는 항상 동일한 구조의 에러 메시지를 받게 되어, 에러 메시지의 차이를 이용한 정보 수집 공격(Side-channel attack)을 방해합니다.
⭐발표자 : 이영청님
페이지 바로가기
> ABOUT US
> SOLUTION
> PR CENTER
> CONTACT
> 인재채용
> kakao i cloud 고객센터
@2024 K2SYSTEMS. All rights reserved.
HOME | ABOUT US | SOLUTION | PR CENTER | CONTACT | 인재채용 | kakao i cloud 고객센터
전역 예외 처리기 (GlobalExceptionHandler.java)
Spring @RestControllerAdvice를 사용하여 서비스 전체에서 발생하는 보안 예외와 유효성 검사 실패를 중앙 집중적으로 처리합니다.
이 설정의 핵심 보안 포인트
Information Exposure 방지
ex.printStackTrace()를 클라이언트에 반환하지 않음으로써 데이터베이스 구조나 서버 내부 경로 누출을 원천 차단합니다. (CWE-209 대응)보안 로깅
Java Logging API를 통해 침입 시도(SecurityException)를 기록하여 나중에 감사(Audit) 자료로 활용할 수 있게 합니다.
정제된 응답
사용자는 항상 동일한 구조의 에러 메시지를 받게 되어, 에러 메시지의 차이를 이용한 정보 수집 공격(Side-channel attack)을 방해합니다.
⭐발표자 : 이영청님