Skip to content

Cookie & Session

kimahhh edited this page Jul 27, 2023 · 1 revision

참조1: https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies

참조2: https://code-lab1.tistory.com/298

HTTP

  1. Connectionless(비연결성)
  2. Stateless(무상태)

따라서 사용자를 식별할 수 있는 무언가가 필요!

Cookie

  • 클라이언트 측(ex. 웹 브라우저)에 저장되는 작은 텍스트 파일
  • HttpResponse Set-Cookie 헤더에 의해 설정
  • 이후 HttpRequest Cookie 헤더에 포함되어 사용자가 사이트를 방문할 때마다 해당 사이트의 서버로 전송

목적

  1. 세션 관리
  2. 개인화
  3. 트래킹

라이프타임

세션 쿠키

현재 세션이 끝날 때 삭제

영속적인 쿠키

Expires 속성에 명시된 날짜에 삭제

Max-Age 속성에 명시된 기간 이후에 삭제

적용 범위

Domain

쿠키가 전송되게 될 호스트들을 명시

Path

Cookie 헤더를 전송하기 위한 URL 경로

Session

  • 서버 측에서 관리되는 상태 정보
  • 세션 사용 단계
    1. 사용자가 사이트에 로그인하면 서버는 고유한 세션 ID 생성
    2. 이 ID는 쿠키를 통해 클라이언트에 전달
    3. 클라이언트는 해당 쿠키를 쿠키 저장소에 저장
    4. 이후 클라이언트의 요청마다 쿠키 안에 세션 ID를 전송
    5. 서버는 이를 통해 사용자를 식별하고 사용자에 대한 정보를 서버 메모리에 저장하거나 검색
  • 서버 측에서 관리 → 쿠키보다 보안성 ⬆️, 저장 가능한 데이터 크기 제한 X
  • 서버의 자원 사용 → 자원 사용량 고려

차이점

  쿠키 세션
저장 위치 클라이언트 측 서버 측
자원 사용 클라이언트 자원 사용 서버 자원 사용 (많은 사용자를 처리할 때 서버에 부하)
보안 취약 (클라이언트에 직접 저장되기 때문) 쿠키보다 우수
데이터 크기 제한 O X (서버의 자원 사용)
유지 시간 만료 시간 동안 파일로 저장 → 브라우저를 종료해도 정보가 남아있음 브라우저가 종료되면 만료시간에 상관없이 삭제