2010년 4월 1일 목요일

Validation 정책에 대해서....

오늘의 주제는 데이터 Validation에 대한 내용이며 개발적인
측명 보다는 QA팀이나 보안검수팀에서 한번 정도 고려
해야 할 정책적인 얘기를 하고자 합니다.
데이터 Validation은 클라이언 사이드의 자바 스크립트
검증과 서버사이드 검증이 있습니다.
쿨 하게 결론 부터 말하자면
"서버 검증만 하자는 것입니다."

  • View Validation을 꼭 사용 하는 경우
(1) 서버 Validation 구현을 기술적으로 자신이 없어서
View Validation만 하는걸로 현업과 협의 된경우

(2) 포털 사이트와 같이 많은 사용자가 있는 곳에서
이벤트 같은 페이지일 경우 (서버로드 최소화 하기 위해서)

(3) 일정에 쪼겨서 검수 항목에 서버 Validation은 제외한 경우

이렇게 3가지 경우 외에는 굳이 View Validation을 할 필요가
없다고생각 합니다.

한번은 제가 보안 검증팀에 View Validation을 빼고
서버 Validation만 하자고 했더니 절대 안된다고 했습니다.
그래서 제가 why? you hate me?
했더니 이해 할수 없는 두가지 답변을 친절하게
해주었습니다.
보안적인 문제와 서버로드 최소를 위한 목적이였습니다.

그래서 저는 위 의 2가지에 대한 반론을 제시 했습니다.
첫번째 보안적인 문제
ㅋㅋ 갑자기 웃음이 나오네요 언제부터 자바 스크립트가
보안 스크립트 였습니까.
HTML 다운 받아서 검증 스크립트 주석 처리하고
submit 하면 안날라 갑니까
도대체 모가 보안 인지 알 수가 없습니다.

두번째 서버 로드 최소화 문제
제가 질문 했던 시스템은 일반 사용자 상대로
외부 노출되는 시스템이 아닌 내부 시스템
이였습니다. 사용자가 정말 많아 봤자 천명이
되지를 않습니다. 그리고 서버에서 Validation은
무거운 작업(DB Connection,XML Parsing,TCP connet)
없이 데이터 검증만 하면 바로 리턴 됩니다.
즉 서버에 라이트한 작업을 요청 하는 것이지요
그리고 일반적으로 데이터를 submit 할 경우
아무 생각없이 글을 작성하지 않습니다.
다들 신중하게 작성을 하기 때문에 경험상
동시에 많은 request가 집중 되지 않습니다.
정말 아파트 분양 입력 화면이나 대박 이벤트
화면이 아니고서는 대부분 서버 사이드에서
처리 해도 됩니다.

  • Server Validation의 장점
프로젝트를 하다 보면 대부분이 서버 컴포넌트
개발 보다 뷰 개발에 더 시간이 올래 걸립니다.
특히나 View 검증 로직에 대한 공수는 은근히
걸립니다.
Server Validation을 하게 되면 View 검증 로직에
대한 공수를 줄일 수 있습니다.
또한 한번에 전체 입력에 대한 검증 실패 메세지
를 보여줄수가 있습니다.
"아이디를 입력 하세요" alert 뜨고 - 다시 입력 후 저장 합니다.
"아이디는 영문이여야 합니다." 또 alert 뜨고
아니 한번에 다 보여주면 얼마나 친절 합니까
외국 사이트는 많이들 이런 컨셉으로 Validation
을 진행 하고 있습니다.

  • 둘다 만족하는 방법 (valang,apache validation)
Server Side에서 Validation 로직을 View에서도 적용 할수
있는 기술적인 것들이 있습니다. 대표적인 것이
apache에서 제공하는 validation과 valang 입니다.
전 개인적으로 이건 최악 입니다.
너무 시스템을 복잡하고 지저분하게 만듭니다.
어떨때는 안하는 것만 못하게 되어 버립니다.
굳이 저렇게 까지 복잡하게 공수를 투자해야
한다는건 개발자의기술적 욕심입니다.

댓글 없음:

댓글 쓰기