쿠키와 세션 모두 HTTP 에 상태 정보를 유지(Stateful)하기 위해 사용된다. 즉, 쿠키와 세션을 통해 서버에서는 클라이언트 별로 인증 및 인가를 할 수 있게 된다.

쿠키

  • 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일이다.
    • 크롬 브라우저 기준으로 '개발자도구' 를 연다.
    • Application - Storage - Cookies 에 도메인 별로 저장되어 있는걸 확인 할 수 있다.

구성요소

  • Name (이름): 쿠키를 구별하는 데 사용되는 키 (중복될 수 없음)
  • Value (값): 쿠키의 값
  • Domain (도메인): 쿠키가 저장된 도메인
  • Path (경로): 쿠키가 사용되는 경로
  • Expires (만료기한): 쿠키의 만료기한 (만료기한 지나면 삭제)

세션

  • 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
  • 서버에서 클라이언트 별로 유일무이한 '세션 ID' 를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
  • 서버에서 생성한 '세션 ID' 는 클라이언트의 쿠키값('세션 쿠키' 라고 부름)으로 저장되어 클라이언트 식별에 사용됨
  • 세션 동작 방식

위 그림에서와 같이 서버는 세션ID 를 사용하여 세션을 유지한다.

  1. 클라이언트가 서버에 1번 요청
  2. 서버가 세션ID 를 생성하고, 응답 헤더에 전달
    1. 세션 ID 형태: "SESSIONID = 12A345"
  3. 클라이언트가 쿠키를 저장 ('세션쿠키')
  4. 클라이언트가 서버에 2번 요청
    • 쿠키값 (세션 ID) 포함하여 요청
  5. 서버가 세션ID 를 확인하고, 1번 요청과 같은 클라이언트임을 인지

쿠키와 세션 비교

  쿠키(Cookie) 세션(Session)
설명 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일
서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
저장 위치
클라이언트 (웹 브라우져)
웹 서버
사용 예
사이트 팝업의 "오늘 다시보지 않기" 정보 저장
정보
만료 시점 쿠키 저장 시 만료일시 설정 가능
(브라우저 종료시도 유지 가능)
다음 조건 중 하나가 만족될 경우 만료됨 1. 브라우져 종료 시까지
2. 클라이언트 로그아웃 시까지
3. 서버에 설정한 유지기간까지 해당 클라이언트의 재요청이 없는 경우
용량 제한 브라우져 별로 다름 (크롬 기준)
- 하나의 도메인 당 180개 - 하나의 쿠키 당 4KB(=4096byte)
개수 제한 없음 (단, 세션 저장소 크기 이상 저장 불가능)
보안
취약 (클라이언트에서 쿠키 정보를 쉽게 변경, 삭제 및 가로채기 당할 수 있음)
비교적 안전 (서버에 저장되기 때문에 상대적으로 안전)

 


로컬 스토리지

로컬 스토리지는 저장되어 있는 데이터를 직접 지우지 않는 이상 영구적으로 그 데이터를 보관할 수 있다.

보통 도메인마다 별도의 로컬스토리지가생성된다. 

특징

  • 브라우저를 종료해도 데이터는 계속 보관돠어있기 때문에 다음번에 다시 접속해서 그 데이터를 사용할 수 있다.
  • 저장 용량 한도가 쿠키,세션보다 가장 크다.
  • HTML4를 지원하는 브라우저에서는 지원되지 않는다.
  • 데이터의 만료시점이 없고 영구적으로 보관한다

'WEB' 카테고리의 다른 글

[WEB] MVC 패턴  (0) 2022.07.18
[WEB] HTTP  (0) 2022.07.05
[WEB] WEB Sever, WAS  (1) 2022.06.16
[WEB] ORM  (1) 2022.06.06
[WEB] JWT란  (0) 2022.05.15