PR CENTER

뉴스룸     |     료실

mobile background

PR CENTER

전역 예외 처리기 (GlobalExceptionHandler.java)

관리자
2026-02-02
조회수 44


전역 예외 처리기 (GlobalExceptionHandler.java)

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("서버 내부 오류가 발생했습니다. 관리자에게 문의하세요.");
    }
}

이 설정의 핵심 보안 포인트

  • Information Exposure 방지

    ex.printStackTrace()를 클라이언트에 반환하지 않음으로써 데이터베이스 구조나 서버 내부 경로 누출을 원천 차단합니다. (CWE-209 대응)

  • 보안 로깅

    Java Logging API를 통해 침입 시도(SecurityException)를 기록하여 나중에 감사(Audit) 자료로 활용할 수 있게 합니다.

  • 정제된 응답

    사용자는 항상 동일한 구조의 에러 메시지를 받게 되어, 에러 메시지의 차이를 이용한 정보 수집 공격(Side-channel attack)을 방해합니다.


                                                                                                                                                                                                                                              ⭐발표자 : 이영청님



















0 0

페이지 바로가기

@2024 K2SYSTEMS. All rights reserved.

HOME       |       ABOUT US       |       SOLUTION       |       PR CENTER       |       CONTACT       |       인재채용       |       kakao i cloud 고객센터  

@2024 K2SYSTEMS. All rights reserved.