03 · CHAPTER 03 · WEB STRUCTURE
폼이 서버에
말을 거는 법
쿼리 문자열·폼 데이터·JSON·파일 업로드가 서버에 전달되는 방식을 구분합니다.
WEB STRUCTURE STUDY NOTE폼이 서버에 말을 거는 법Form · Parameter · JSON · Upload
01
주문서에도 여러 칸이 있다
핵심 용어
Form Parameter JSON Upload
같은 주문이라도 주소, 요청사항, 첨부파일은 서로 다른 방식으로 전달됩니다.
GET 매개변수는 URL에 보이고 POST 본문은 요청 내부에 담깁니다. API는 JSON을 자주 사용하며 파일은 multipart/form-data로 전송됩니다.
클라이언트 검증은 사용성을 돕지만 우회할 수 있으므로 서버가 자료형, 길이, 범위, 허용 목록을 다시 확인합니다.
02
입력값이 들어오는 문
핵심 개념
Query Form JSON Header File
애플리케이션은 여러 입력 경로를 한꺼번에 다룹니다.
QueryURL의 검색·필터 값
Form사용자가 제출한 필드
JSONAPI 요청 본문
Header인증·콘텐츠 정보
File이름·형식·내용을 가진 업로드
03
로컬 실습 요청 보내기
관련 명령어
curl "http://127.0.0.1/search?q=test" curl -X POST -d "name=test" http://127.0.0.1/form curl -X POST -H "Content-Type: application/json" -d "{\"name\":\"test\"}" http://127.0.0.1/api 자신의 개발 서버에 여러 형식의 요청을 보내 차이를 확인합니다.
$ curl "http://127.0.0.1/search?q=test"
$ curl -X POST -d "name=test" http://127.0.0.1/form
$ curl -X POST -H "Content-Type: application/json" -d "{\"name\":\"test\"}" http://127.0.0.1/api
04
파일 이름보다 내용을 확인하기
보안 관점
위험 요소 확인 기준 대응 원칙
확장자와 Content-Type은 사용자가 바꿀 수 있습니다.
업로드 파일은 웹 루트 밖에 저장하고 서버가 만든 이름을 사용합니다. 크기·실제 형식·권한을 제한하고 실행을 막습니다.
입력값은 화면의 폼에서만 오는 것이 아니다. URL, 헤더, 쿠키, JSON, 파일을 모두 같은 신뢰 경계로 보자.
CHAPTER REVIEW
이번 장에서 기억할 한 문장
사용자가 보낸 값은 형식이 무엇이든 신뢰하지 말고 서버에서 다시 검증해야 한다.