Query String

Jan 25, 2024
Query String

1. 쿼리 스트링(Query String)

notion image
  • 웹 요청에서 URL의 끝에 포함되는 데이터 조각
 
  • 웹 브라우저에서 폼을 제출하거나, 웹 페이지 간에 데이터를 전달할 때 사용
HTTP GET 요청)
클라이언트가 서버에 데이터를 전달하거나 서버에서 데이터를 요청
HTTP POST 요청 )
본문(Request Body)에 데이터를 담아서 전송하는 데 사용
 
  • ?부터 여러 개의 매개변수(key-value 쌍)를 포함
키(Key) : 값에 접근하기 위한 이름 또는 식별자
값(Value) : 키에 해당하는 데이터나 정보
? : URL의 끝에 붙어 쿼리 문자열이 시작됨
& : 여러 개의 키-값 쌍을 구분
 
  • 구체적 질의 : 전세계 표준이 있음
insert 아님 → select) where절에 걸기 위함
 
  • 요청과 구체적 질의의 차이
ex) 통닭.com?사이즈=라지&음료=콜라 →구체적 질의
ex) 논문.com → get요청이지만 뭘 달라는지 알 수 없음
논문.com?title=인간경제 → 인간경제라는 타이틀을 가진 논문을 줘
ex) 회원가입을 위한 username, password, email은 insert
→ 쿼리 스트링으로 요청하면 안됨
💡
?없이 key=value&key=value의 형태 사용하는 데이터 타입
x-www-form-urlencoded 데이터 형식-데이터 타입/MIMETYPE
 
HTTP 헤더
  • 요청이나 응답에 대한 부가적인 정보(메타 데이터)를 전송
전송되는 데이터에 대한 설명, 제어, 인증 등의 목적으로 사용
 
HTTP 바디
  • 실제 전송되는 데이터를 담고 있음
  • 헤더의 메타 데이터가 끝난 후에 바디가 전송
  • 바디의 형식 : Content-Type 헤더에 의해 결정
 
주소(URL) 뒤에?가 붙어 URL을 실어감
주소에 데이터를 받아서 insert 할 수 있는데 안 담는 이유
: URL은 총 255바이트밖에 담지 못함
ex) 총 영어 255자밖에 담을 수 없음 / 한글은 3Byte라 더 적게 담김
작다고 URL에 실고 길다고 바디에 실고 하면 일관성이 깨짐
⇒ 모든 데이터를 바디에 실어 보냄
ex) insert하려면 바디에 정보를 담아서 보내야 함
 
하이퍼링크가 주소에 입력하는 것은 다 get요청
일반 사람은 post요청을 주도적으로 할 방법이 없음
 

클라이언트들이 DB에 마음껏 inbsert 하면 안되는 이유

1) 10년 전에는 보안상의 문제
  • 통신은 공유기에 Wireshark(와이어샤크)같은 툴로 지켜보고 있으면 어떤 데이터가 왔다 갔다 하는지 다 볼 수 있음 / 암호가 없으면 가능
  • 바이트가 흘러가는 것이기 때문에 다 볼 수 있음 → 데이터를 암호화해야 함
눈에 보이지 않더라도 데이터는 다 흘러감
바디 데이터 = 페이로드> 데이터가 다 보임
notion image
 
2) 데이터의 일관성과 무결성을 위협
  • 데이터의 형식이나 제약 조건을 준수하지 않을 수 있음
 
 
Share article

vosw1