상세 컨텐츠

본문 제목

Spring이 제공하는 Validation이란?

Java TIL

by 개발일지작성 2023. 12. 6. 14:13

본문

728x90

Validation 이란 무엇인가?

사용자로부터 입력받은 데이터나 어플리케이션 내부에서 사용되는 데이터에 대한 검증( Validation )을 수행하는 기능이다.

잘못된 데이터로부터 애플리케이션을 보호하고 데이터의 일관성을 유지하는데 도움이 되는 기능

즉, HTTP 요청이 정상인지 검증하는 것

 

왜 사용하는가?

1. 만약 주문서 작성 페이지에서 잘못된 입력값으로 인해 서버에 오류가 발생한다면? (사용자 입력 데이터의 검증)

    a. ex) 휴대폰 번호에 숫자가 아닌 문자가 들어간 경우 -> BadRequst 

 

2. 서버의 문제로 인해 작성 페이지에서 Error 페이지로 이동된다면?

   a. 위 예시의 경우 Bad Request Response와 오류페이지가 반환

 

3. 비즈니스 룰 적용

   a. 비즈니스 도메인에서 정의한 규칙에 따라 데이터를 검증

   b. ex) 주문을 생성할 때 재고 수량이 충분한지, 사용자의 나이가 특정 범위에 있는지 등을 확인 가능

 

4. 데이터 일관성 유지

   a. DB에 저장되는 데이터의 일관성을 유지하는데 사용

   b. DB 트랜잭션 이전에 데이터가 유효한지 확인, 잘못된 데이터가 데이터베이스에 저장되지 않도록 함

 

5. 에러메시지 제공

   a. 검증 실패 시 사용자에게 적절한 에러 메시지를 제공하여 어떤 부분이 잘못 되었는지 알려줌

   b. 사용자 친화적인 에러 메시지를 통해 사용자 경험을 향상 시켜줌

 

검증 방법

Fornt 검증

사용자의 웹 브라우저에서 이루어지며, 주고 자바스크립트를 사용하여 구현됨

사용자가 입력한 데이터를 브라우저에서 미리 검증하여 잘못된 데이터를 서버로 전송하지 않도록 하는 목적을 가지고 있음

 

특징

  • 사용자의 경험 향상 : 사용자는 즉시 입력한 내용에 대한 피드백을 받을 수 있어 사용자 경험을 향상시킴
  • 서버 부하 감소 : 일부 간단한 유효성 검사를 클라이언트에서 처리하므로, 서버로 전송되는 잘못된 데이터의 양을 줄일 수 있음
  • 보안 측면에서 취약 : 클라이언트 측에서 수행되기 때문에, 신뢰할 수 없는 클라이언트에서는 우회될 수 있음. 따라서 클라이언트 측 검증만으로는 완전한 보안을 보장할 수 없음

Server 검증

서버에서 이루어지는 데이터 유효성 검사로, 클라이언트에서 전송된 데이터를 서버에서 실제로 처리하고 저장하기 전에 다시 한번 검증하는 것을 의미함

 

특징

  • 보안 강화 : 서버는 클라이언트에서 수행되는 검증 외에도 추가적인 보안 검사를 수행할 수 있어 더욱 안전함. 클라이언트에서의 검증은 보조적인 역할로만 사용되어야 함
  • 서버에서의 로직 수행 : 서버에서의 검증은 더 복잡한 비즈니스 로직이나 DB와의 상호작용을 수행할 수 있음
  • 클라이언트 독립성 : 서버에서의 검증은 클라이언트의 특정 기능이나 브라우저 종류에 독립적임
  • 클라이언트에서 우회 불가능 : 서버에서 수행되기 때문에 클라이언트에서 우회할 수 없음

관련글 더보기