[NetWork] Cookie

2021. 1. 24. 01:30Computer Science/네트워크

Cookie

1. 개념

 º 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각

 º 브라우저는 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이터를 함께 전송

 º 무상태(Stateless)인 HTTP 프로토콜에서 상태 정보를 기록

 º Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)

 º Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달

 

2. 사용 목적

 º 세션 관리(Session management)

   - 서버에서 저장해야할 로그인, 장바구니, 게임 스코어 등의 정보 관리

 º 개인화(Personalization)

   - 사용자 선호, 테마 등의 세팅

 º 트래킹(Tracking)

   - 사용자 행동을 기록하고 분석하는 용도

 

3. 특징

 º 쿠키 정보는 항상 서버에 전송

   -  네트워크 트래픽 추가 유발

   -  최소한의 정보만 사용(ex. 세션 ID, 인증 토큰) 

 º 쿠키 정보를 클라이언트 측에 저장하려면 웹 스토리지 API(localStorage, sessionStorage)와 IndexedDB를 사용 

 

 

Set-Cookie

 

1. 정의

 º 서버에서 클라이언트(브라우저)로 쿠키 전달(응답)

 º  ex. set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google.com; Secure

 

2. 요소

 ▶ 생명주기

  º expires : HTTP 타임스템프로 기록된 쿠키의 최대 생존 시간(수명)

  º max-age : 쿠키가 만료될 때 까지의 시간을 초 단위로 계산

      (ex. max-age=3600 -> 3600초, 0이나 음수를 지정하면 쿠키 삭제)   

  º  세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료시 까지만 유지

  º  영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지

 

 ▶ 도메인

  º 명시: 명시한 문서 기준 도메인 + 서브 도메인 포함

    - domain=example.org를 지정해서 쿠키 생성

    - example.org 를 포함하여 dev.example.org도 쿠키 접근

  º 생략: 현재 문서 기준 도메인만 적용

    - example.org 에서 쿠키 생성하고 domain 지정을 생략

    - example.org 에서만 접근 가능. dev.example.org는 쿠키 접근 불가

 

 ▶ 경로

  º 이 경로를 포함한 하위 경로 페이지만 쿠키 접근

  º 일반적으로 path=/ 루트로 지정

  º ex. path=/home 지정  

    - /home -> 가능

    - /home/level1 -> 가능

    - /hello -> 불가능

 

 ▶ 보안

  º Secure

    - Secure를 적용하면 https인 경우에만 전송(쿠키는 http, https를 구분하지 않고 전송)

  º HttpOnly

    - XSS 공격 방지

    - 자바스크립트에서 접근 불가(document.cookie)

    - HTTP{ 전송에만 사용

  º SameSite

    - XSRF 공격 방지

    - 요청 도메인과 쿠키에 설정된 도메인이 같은 경우만 쿠키 전송

 

Reference

- developer.mozilla.org/ko/docs/Web/HTTP/Cookies

- 인프런 김영한 선생님 강좌 "모든 개발자를 위한 HTTP 웹 기본 지식"

'Computer Science > 네트워크' 카테고리의 다른 글

[Network] HTTP, HTTP/2  (0) 2021.07.20
[Network] Router, Routing ?  (0) 2021.01.10
[Network] HTTP - 헤더  (0) 2020.09.19
[NetWork] imap? POP3?  (0) 2020.06.03
TCP UDP 란?  (0) 2020.04.05