작성
·
469
2
안녕하세요 강사님
다름이 아니라 기존에 프로젝트에서 spring 프레임워크, jsp, 자바스크립트 + jquery 기반으로 실무에서 웹개발을 했는데
사실상 스프링을 사용하고 있다고 말하기 민망할 정도로 기능을 거의 사용하지 못했었습니다.
그래서 이부분도 새로 공부중입니다ㅠㅠ
강의를 듣다보니 @Vaild나 NotEmpty같은 어노테이션도 알게 되고 BindingResult 같은 클래스 패키지도 알게되면서
뭔가 새로태어나는 기분이 들고 있습니다.
이번 강의 끝에 유효성 검사부분을 배우면서 생각이 드는 것이
저는 보통 유효성 검사를 할 때 자바스크립트 jquery를 사용해서 클라이언트단에서 유효성 검사를 하고 중요한 데이터의 경우 백단에서 DB체크(?)를 한번 더 해주는 식으로 개발했었는데요
스프링+타임리프를 조합하니 클라이언트단에서도
UX조작이 가능한 것 같았습니다.
유효성 검사의 어노테이션들을 적절하게 사용한다면
더이상 클라이언트단에서 자바스크립트를 통해 유효성 검사 부분이 불필요하게 되는 건가 조심스럽게 여쭤봅니다.
답변 1
8
안녕하세요. 오준영님^^
이 부분은 절대적인 답이 있다기 보다는 트레이드 오프가 있습니다.
자바스크립트로 검증하면, 서버 통신을 안해도 되니 사용자 반응성과 속도에서 확실히 장점이 있습니다.
하지만 보안은 취약하지요. 그래서 자바스크립트로 하면 결국 서버 사이드에서 검증을 추가로 해주어야 합니다.
반면에 이렇게 서버에서 다 처리하는 방식을 사용하면, 서버 사이드에서만 검증을 하면 되니 여러가지 편리함이 있습니다. 대신 복잡한 화면은 또 이렇게 처리하기가 쉽지 않습니다. 그리고 서버를 왔다 갔다 해야하니 사용자 반응 속도에서 좋지 않습니다.
그래서 이 두가지를 적절하게 섞어서 사용하는 부분을 고민해보시는 것도 좋습니다. 예를 들어서 자주 발생하는 간단한 오류는 자바스크립트로 해결하고, 추가로 또 서버에서 검증하는 부분은 기본으로 가져가구요.
감사합니다^^
이메일 형식도 사용자가 이상하게 서버에 넘길 수 있습니다. (스크립트를 강제로 수정해서) 따라서 원칙적으로는 서버에서 주요한 모든 부분을 체크해야합니다. 물론 실용적인 부분에서 어느정도는 타협할 수 있다 생각합니다.
감사합니다.
예를들면 아이디입력을 이메일로 받을경우 글자수 체크나 @ .com등 형식체크등은 프론트단에서 자바스크립트로 간단히 빠르게 해주고
비밀번호처럼 서버와 직접 데이터를 조회해서 검증해야할부분들은 서버쪽에서 다 해주라
는 걸로 이해해도 될까요?