W3B H4CK1NG

[dreamhack] Lecture. Cookie

hauni 2023. 11. 28. 20:17

쿠키 Cookie

HTTP에서 상태를 유지하기 위해 Key-Value로 이루어진 일종의 단위

클라이언트의 브라우저에 저장되고 요청에 포함되는 정보

클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용

 

*정보 기록: 각 클라이언트의 팝업 옵션을 기억하기 위해 쿠키에 정보를 기록하고 쿠키를 통해 팝업 창 표시 여부를 판단

*상태 정보: 웹 서버는 클라이언트의 로그인 상태와 이용자를 구별해야 하므로 식별할 수 있는 값을 쿠키에 저장해서 사용

 

HTTP 프로토콜의 특징 → 쿠키 사용 이유

  1. Connectionless: 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것
  2. Stateless: 통신이 끝난 후 상태 정보를 저장하지 않는 것

세션 session

인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(유추할 수 없는 랜덤 문자열)을 만들어 클라이언트에 전달하는 방식

키  → session ID

세션은 서버가 저장함


쿠키 적용법

클라이언트가 서버에 요청을 보낼 때 저장된 쿠키를 요청 헤더에 넣어 전송하기 때문에 이용자가 요청을 보낼 때 쿠키 헤더를 변조할 수 있음

EditThisCookie 사용해서 확인할 수 있음 (크롬 확장파일)

 

서버

HTTP 응답 중 헤더에 쿠키 설정 헤더 Set-Cookie)를 추가하면 클라이언트의 브라우저가 쿠키를 설정

HTTP/1.1 200 OK
Server: Apache/2.4.29 (Ubuntu)
Set-Cookie: name=test;
Set-Cookie: age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;...

 

클라이언트

자바스크립트를 사용해 쿠키를 설정

document.cookie = "name=test;"
document.cookie = "age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;"