What we have to do is to be forever curiously
testing new opinions and courting new impressions

우리가 해야 할 일은 끊임없이 호기심을 갖고
새로운 생각을 시험해보고 새로운 인상을 받는 것

✈️ 서버에서 검증해야 하는 이유

🎯 개요

평소 인터넷 사용 시 항상 웹브라우저를 통하지만, 사실 웹브라우저 없이도 서버에 요청을 보낼 수 있음 이게 웹 보안에서 가장 중요한 개념이고, 서버에서 반드시 검증해야 하는 이유임

📋 목록

  • Postman이란?
  • 식당 비유로 이해하기
  • 실제 웹 서비스 예시
  • 핵심 개념 정리
  • 왜 이게 중요한가?

✏️ 먼저 알아야 할 것

  • 평소 인터넷 사용 시 항상 웹브라우저(크롬, 사파리 등)를 통함
  • 네이버 접속, 유튜브 시청, 쇼핑몰 구매 등 모두 브라우저 경유
  • 그런데 사실 웹브라우저 없이도 서버에 요청을 보낼 수 있음
  • 이게 웹 보안에서 가장 중요한 개념

✏️ Postman이란?

  • 개발자들이 API를 테스트할 때 사용하는 프로그램
  • 웹브라우저를 거치지 않고 서버에 직접 HTTP 요청을 보낼 수 있음
  • 원래는 개발자가 자신이 만든 API가 잘 작동하는지 테스트하려고 쓰는 도구
  • 악의적인 사용자가 비정상적인 요청을 보내는 데 악용될 수 있음
  • 비슷한 도구로 curl, Insomnia, HTTPie 등이 있음
  • 웹브라우저의 개발자 도구로도 비슷한 일이 가능함

✏️ 식당 비유로 이해하기

웹브라우저 = 메뉴판

식당에 갔다고 생각해보면 메뉴판에는 이렇게 써있음

  • 짜장면 7,000원
  • 짬뽕 8,000원
  • 1인 1메뉴 주문 필수

메뉴판(웹브라우저)은 손님에게 “이렇게 주문하세요”라고 안내함 대부분의 손님은 메뉴판을 보고 정상적으로 주문함

서버 = 주방

주방(서버)은 실제로 요리를 만들고 내주는 곳 손님의 주문을 받아서 처리함

Postman = 주방에 직접 들어가는 것

어떤 손님이 메뉴판을 무시하고 주방에 직접 들어가서 요리사에게 말함

“짜장면 10그릇 주세요, 공짜로요”

이때 요리사(서버)가 어떻게 반응해야 할까?


✏️ 두 가지 식당 비교

위험한 식당 (검증 없음) 안전한 식당 (검증 있음)
손님: “공짜로 10그릇 주세요” 손님: “공짜로 10그릇 주세요”
요리사: “네, 알겠습니다” 요리사: “결제부터 하세요”
→ 그냥 줘버림 → 거절함

💡특이사항

서버(요리사)가 직접 검증하지 않으면 악의적인 요청도 그대로 처리됨


✏️ 실제 웹 서비스 예시

게시판 서비스를 만들었다고 가정

상황 설정

  • 철수가 게시글 작성함 (게시글 번호: 5)
  • 웹페이지에서는 본인 글에만 “삭제” 버튼이 보임
  • 영희는 철수의 글을 볼 수 있지만 삭제 버튼은 안 보임

일반적인 생각

“삭제 버튼이 안 보이니까 영희는 철수 글을 못 지우겠네!”

현실

영희가 개발을 조금이라도 알면 Postman 같은 프로그램을 열어서 이렇게 보낼 수 있음

DELETE /api/posts/5

(5번 게시글을 삭제해주세요)


✏️ 서버 코드에 따른 결과 비교

검증 없는 서버 검증 있는 서버
삭제 요청 들어옴 삭제 요청 들어옴
→ 바로 삭제 실행 → “요청자가 작성자인가?” 확인
  → 아니면 거부
결과: 철수 글이 삭제됨! 결과: 요청 거절됨

✏️ 핵심 개념 정리

프론트엔드 검증 = 안내문

  • 버튼 숨기기, 입력값 체크 등
  • 친절한 사용자에게만 효과 있음
  • 우회 가능 (Postman으로 직접 요청)

백엔드 검증 = 실제 잠금장치

  • 서버 코드에서 직접 확인
  • 모든 요청에 적용됨
  • 우회 불가능

💡특이사항

안내문(프론트)은 무시할 수 있지만 잠금장치(백엔드)는 뚫을 수 없음


✏️ 왜 이게 중요한가?

만든 서비스에 10만 명이 가입했다고 상상해보면 그 중 단 한 명만 Postman 사용법을 알아도:

  • 다른 사람 글을 마음대로 삭제
  • 다른 사람 계정 정보를 수정
  • 있지도 않은 쿠폰을 적용
  • 결제 없이 상품을 주문

한 명의 악의적인 사용자 때문에 나머지 99,999명이 피해봄


🔄 개념 비교

개념 역할 특징
프론트엔드 검증 사용자 안내 버튼 숨기기, 입력값 체크 등 우회 가능
백엔드 검증 실제 보안 서버에서 직접 확인, 우회 불가능
Postman API 테스트 도구 브라우저 없이 서버에 직접 요청 가능

💡 요약

  1. 웹브라우저 없이도 서버에 요청을 보낼 수 있음
  2. 프론트엔드에서 버튼을 숨기는 것은 진짜 보안이 아님
  3. 서버(백엔드)에서 반드시 검증해야 함

“누가 이런 짓을 하겠어?”라고 생각하지 말 것 인터넷에는 항상 그런 사람이 있음

댓글남기기