BackEnd/Spring & Springboot Study

Validation

백기선님 강의중 @Valid 어노테이션을 사용하셔서 알아보게 되었다.

 

Validation이란 데이터가 유효한 값인지, 타당한 값인지 확인하는 것을 의미한다.

예를 들어 전화 번호 양식이 010-xxxx-xxxx인데 숫자값 이외의 값을 넣었거나 패턴을 벗어났을 경우

이메일 주소 양식이 abcde@google.com인데 주어진 패턴을 벗어나서 

이메일 양식과 일치하지 않는다면 유효하지 않은 이메일 이므로 회원가입을 차단한다.

 

자바스크립트로 유효성 검사를 해도 UX측면에서 사용자에게 편의성을 제공하기 위함이지 보안성 측면에서는 부족하다.

서버에 오기전에 프론트에서 걸러주면 serverResource를 절약 할 수 있고, 사용자에게 조금 더 빠르게 FailFast가 가능하다.

뒤늦게 가서 공항 가서 여권찾는거 보다 집을 나가자 마자 여권 안챙겼네? 이러는 게 낫다.

보안적 측면에서 유효성 검사란 올바르지 않은 데이터가 서버로 전송되거나 DB에 저장되지 않게 하는 것이다.

 

스프링에서는 서블릿 2.3표준 스펙 중 JSR 303 Validator를 확장하여 Annotation기반으로 validation을 제공한다.

 

왜 사용하는가?

일반적으로 애플리케이션 데이터 유효성 검사시에는 아래와 같은 문제점이 있다.

애플리케이션 전체에 분산되어있다.

코드 중복이 심하다.

비지니스 로직에 섞여있어 검사 로직 추적이 어렵고 애플리케이션이 복잡해진다.

Controller <-> Service <-> Repository

(validation)    (validation)    (validation)

 

이를 해결할 방법으로

자바에서 2009년부터 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공하고 있다.

Bean Validation은 위에서 말한 문제들을 해결하기 위해 다양한 제약(Contraint)을 도메인 모델(Domain Model)에 어노테이션(Annotation)로 정의할 수 있게한다. 이 제약을 유효성 검사가 필요한 객체에 직접 정의하는 방법으로 기존 유효성 검사 로직의 문제를 해결한다.

 

 

 

 

출처 :

victorydntmd.tistory.com/179

 

[Spring] 유효성 검사 ( form validation )

Validation validation이란 어떤 데이터의 값이 유효한지, 타당한지 확인하는 것을 의미합니다. 예를들어 이메일 주소 양식은 admin@example.com인데, 회원 가입을 할 때 이메일 양식이 일치하지 않으면 유

victorydntmd.tistory.com

velog.io/@ljinsk3/Spring-Validation

 

Spring Validation

유효성 검사는 보통 객체가 생성될 때 수행되어 값이 보장된 상태에서 객체 생성을 허용하기 위한 용도로 사용한다.요청을 통해 들어오는 form 객체 (or DTO)에 대해 값의 유효성 검사(validation)하는

velog.io

meetup.toast.com/posts/223

 

Validation 어디까지 해봤니? : TOAST Meetup

TOAST Cloud의 메시징 플랫폼 상품인 Notification은 메시지, 이메일 주소 형식, 수신/발신자의 번호 등 클라이언트의 입력값에 대해 많은 검증을 진행합니다.

meetup.toast.com