-
[SSAFY] SSAFY 12기에서 가장 많이 들었던 질문: 프론트엔드와 백엔드의 Validation, 둘 다 필요한가?SSAFY 2024. 12. 12. 00:55
나는 이번엔 SSAFY 12기 참여하여 활동하면서
동료들이 나한테 질문 했던 것 중에 제일 많이 했고 제일 중요하다고 느낀 부분에 대해서 작성한 글이다
SSAFY에서 웹 백엔드와 프론트엔드를 배우면서 동료들이 했던 질문은 바로!
입력값을 받고 나서 입력값 validation을 프론트엔드와 백엔드에서 둘다 굳이 해줘야 하냐?
둘중에 한곳에서만 해주면 안되냐?
이런 질문이다항상 이런 질문 들으면 나의 답변은 둘다 해줘야 한다였다
더 정확하게 말을 하자면
프론트 엔드, 백엔드에서 두 곳의 입력값 검증을 하는 이유가 다르고,
각각 어떤 검증을 해야하고 검증의 역할이 다르기 때문 이다
이제 이 글에서는 왜 프론트엔드와 백엔드 모두에서 입력값 검증을 해야 하는가? 라는 거에 대해 구체적으로 살펴볼것이다
1. 프론트엔드에서 입력값 검증이 필요한 이유
프론트에서의 입력값 검증은 주로 사용자 경험(UX)와 시스템 성능 측면에서 중요하다.
- 즉각적인 피드백 제공
프론트엔드에서 입력값을 검증하면 사용자는 실시간으로 잘못된 입력에 대한 피드백을 받을 수 있다.
예를 들어, 비밀번호가 특정 규칙에 맞지 않거나 필수 입력 필드가 비어 있을 때 바로 알림을 받을 수 있다.
이는 사용자가 올바른 데이터를 입력할 수 있도록 도와주며, 불필요한 서버 요청을 줄이는 데도 기여한다.- 서버 부하 감소
간단한 입력값 검증(예: 이메일 형식 확인, 숫자 범위 확인 등)을 클라이언트 측에서 처리하면 잘못된 데이터로 인한 서버 요청을 사전에 차단할 수 있다.
이는 서버 리소스를 아끼고 성능을 개선하는 데 중요한 역할을 한다.2. 백엔드에서 입력값 검증이 필요한 이유
백엔드에서의 입력값 검증은 보안과 데이터 무결성을 보장하기 위해 필수적이다.
- 신뢰할 수 없는 데이터 방지
프론트엔드는 사용자의 브라우저에서 실행된다. 이는 즉, 클라이언트가 검증 로직을 우회하거나 수정할 가능성이 있다는 것이다.
악의적인 사용자는 프론트엔드 검증을 무시하고 잘못된 데이터를 서버로 보낼 수 있기 때문에, 백엔드에서 반드시 데이터를 검증해야 한다.
- 데이터 무결성 유지
백엔드는 데이터베이스에 저장되거나 다른 시스템과 상호작용하는 데이터를 책임지는 최종 단계이다.
이 단계에서 잘못된 데이터를 걸러내지 못하면 시스템 전체에 심각한 오류가 발생할 수 있다.
예를 들어, SQL Injection이나 XSS 공격 같은 보안 위협도 백엔드 검증을 통해 방어할 수 있다.정리를 하자면...
프론트엔드 백엔드 목적 사용자 편의성과 서버 요청 감소 데이터 신뢰성 확보와 보안 강화 주요 검증 필수 입력 확인, 데이터 형식 확인, 길이 제한 입력 데이터의 무결성 검증, 보안 위협 방지, 데이터 베이스 제약 조건 확인 둘다 필요한 이유는 결국!
서로 보완적인 역할을 한다.
그러면 둘 중 하나만 실행하게 된다면 어떻게 될까?
1) 프론트엔드 검증만 수행할 경우
- 보안이 취약해지고 악의적인 요청으로 인해 시스템이 손상될 위험이 있다
2) 백엔드 검증만 수행할 경우
- 사용자는 잘못된 입력에 대한 실시간 피드백을 받을 수 없다, 잘못된 요청으로 인해 요청이 늘어나 이는 곧 서버의 성능이 저할 될 수 있다.
결국 각각의 역할에 맞는 검증을 수행하는 것이 안정성과 효율성을 동시에 확보하는 방법이다.