ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 입력값 검증의 범위와 책임
    웹 개발 2025. 3. 30. 21:35

     

    Index

    1. 입력값 검증(Input Validation) 이란?
    2. 입력값 검증을 각 계층별로 진행해야 하는 이유
    3. 중복 검증과 안전성의 트레이드 오프
    4. 계층별 검증 범위와 판단 기준

    이전에 작성한 데이터 검증(Vallidation)을 어디에서 해야하는가 와 같은 주제로, 추가적으로 필요한 정보를 보충하고 정리했습니다.

     


    입력값 검증(Input Validation) 이란?

    프로그램에 입력된 데이터가 예상한 형식과 조건을 만족하는지 확인하는 과정입니다.

     


     

    입력값 검증을 각 계층별로 진행해야 하는 이유

    단일 계층에서 입력값을 검증하기 보다 각 계층별마다 검증하는 것이 권장되는 이유는 다음과 같습니다.

     

    데이터 분석 관점이 다르다 :

    각 계층은 하나의 데이터를 두고 다른 관점에서 분석합니다.

    때문에 검증해야할 항목이 달라집니다.

     

    방어 계층으로 처리 비용 증가를 방지해야 한다 :

    외부 요청이 내부로 전파되면 처리 비용이 증가하므로 최대한 바깥 레이어에서 잘못된 데이터를 걸러내는 게 좋습니다.

    각 계층마다 검증을 통해 방어하면 안전성을 높일 수 있습니다.

     

     


    중복 검증과 안전성의 트레이드 오프

    안전성 <-> 성능

    검증을 하면 할 수록 높은 안정성을 가지지만, 성능이 저하될 수 있습니다.

    입력값에 대한 검증을 각 계층별로 진행한다면 검증의 중복이 일어나고 응답 시간이 길어질 수 있습니다.

     

    유연성 <-> 일관성

    검증 로직을 엄격하게 분리하면 유연성이, 책임이 모호해지면 일관성있는 검증이 어려워 집니다.

     


    계층별 검증 범위와 판단 기준

    프레젠테이션 계층(Presentation Layer)

    컨트롤러 레이어와 같이 클라이언트의 요청을 받아 서비스 계층에 전달하고 응답을 반환하는 레이어를 의미합니다.

    주요 판단 기준 : API 스펙 준수 여부

    TODO : 입력 유효성 검증(= HTTP 요청 파라미터 검증), DTO 검증 등


    서비스 계층(Service Layer)

    주요 판단 기준 : 비즈니스 규칙 준수 여부

    TODO : 내부 DB 조회, 외부 호출이 필요할 때 등 비즈니스 로직과 관련된 검증

     

    도메인 모델 계층(Domain Medel Layer)

    주요 검증 기준 : 도메인 객체 무결성 유지

    TODO : 필드 값 검증

     

    순서

    컨트롤러 → 서비스 → 엔티티 순으로 검증을 진행하는 것이 일반적입니다.

     

     


     

Designed by Tistory.