Backend에서 Validation이 왜 필요할까?

.·2021년 10월 12일
0

W10D1 개발문서화와 협업(1)

KTPT 프로젝트인 Quna를 구현할 때,
Answer Entity에서 content 필드에 대해 verify를 해주었었다.

@Entity
public class Answer {
    private void verify(String contents) {
        if (this.contents.equals(contents)) {
            throw new IllegalArgumentException(UPDATE_FAIL_MESSAGE);
        }
    }
}

같이 작업하는 팀원들에게 "프론트에서 아예 잘못된 입력을 걸러서 백엔드 단으로 보내주지 않으면 되는거 아닌가?" 라는 생각을 하며 질문을 했었는데, "양쪽에서 validate를 하는 것이 좋다"라는 대답만을 들었던 기억이 있다.

validation에 대하여> 왜 백엔드가 신경써주어야 하는가?

오늘 강의에서 validation에 대하여> 왜 백엔드가 신경써주어야 하는가?라는 강의 내용이 있어서 정리를 해보았다.

  1. 개발자 도구 or DOM을 조작하여 프론트엔드에서 지원하지 않는 api를 호출할 수 있다.
    • 사례: 2020년도 수능 성적표를 미리 확인할 수 있었던 이슈
      • 먼저 db에 모든 점수를 넣어두었다.
      • 평가원 웹사이트는 드롭다운으로 2020년 이전년도를 선택하여 성적표를 다운받을 수 있게 해두었다.
      • 성적 발표일 전에 DOM을 조작하여 2020이 선택된 것으로 설정하고 성적표를 미리 다운받을 수 있었다.
    • 2020 이상이면 api 호출을 if문 등으로 막았어야 했다.
  2. db column type이 validation rule에 근거할 수 있다.
    • 사례: 게시글 내용 최대 길이 -> varchar(200)
  3. validation rule은 기획 수준에서 정의해야 한다
    • 백엔드, 프론트엔드 모두 대응 가능해야 한다.
    • 미리 정의하지 않으면 후에 db table의 column type이 변할 수도 있다.

결론

백엔드에서 validation을 하는 것은 지극히 당연한 것!

0개의 댓글