개발자 도구 js 코드 수정 질문
본문
클라이언트에서 코드의 수정이 가능하면 문제가 발생할 수 있는 부분의 코드를 개발하고 있습니다.
브라우저 개발자 도구를 이용하면 js 변수를 변경하거나 함수를 강제로 실행시킬 수 있어서
그런 부분을 생각하면서 개발을 진행하고 있는데 궁금한 점이 있어서 질문 드립니다.
필수 조건을 충족 시켜야 다음 스탭으로 넘어가는 로직을 개발하는 경우 예외처리를 어떻게 하시나요?
- 저는 js에서 조건을 충족했는지 확인을 하긴 하지만, 변수 내용을 변경하거나 하는 등 쉽게 수정이 가능하기 때문에 php 에서 한 번 더 검증을 진행합니다.
하지만 지금 하고 있는 방법이 일을 2번 하고 있는건가? 어차피 개발자 모드로 조작하면 js에 걸어둔 조건을 뚫을 수 있으니까 php에서만 막는 코드를 넣으면 되는거 아닌가 하는 생각이 들었습니다.
제가 한 번 해도 되는 일을 두 번씩 처리하고 있는지 궁금합니다.
답변 3
일반적으로 대부분의 사용자는 JavaScript코드가 존재하는지 조차 모릅니다.
그냥 말 그대로 사용자일뿐이죠
그런데, 일부 악용을 하는 크랙커를 방지하기위한 코드로 백엔드의 Validation을 하는것이고, 안정성과 보안을위한일인데
사용자단에서 선검증을 하지 않고 넘길경우.
백엔드 영역에서 트래픽과 처리에대한 부하가 증가합니다.
사용자가 적은 사이트라면 백엔드만 해도 무방하겠지만
사용자가 100명만 넘어가더라도 트래픽의 양은 폭발적으로 증가하게 됩니다.
또한 속도면에서도
일반사용자들은 브라우저가 단순 검증을 해주면 트래픽과 무관하게
자잘한 조치를 할수있습니다.
그런데, 작은 것 하나라도 백엔드에서 검증하려면
트래픽은 생각한것보다 많이 증가할수밖에 없죠
당연히 트래픽이 높아지면 속도는 느려지고
이 모든것은 비용의 증가로 이어집니다.
네 말씀하신 이유로 대부분 프론트에서도, 백엔드에서도 한번씩 검증합니다
클라이언트 검증은 사용자경험(UX) 보완 측면의 목적이 있고
서버 검증은 데이터 자체의 값 검증에 목적이 있습니다.