[Spring] 쿠키와 세션

최혜원·2023년 10월 1일
0

Spring

목록 보기
12/19
post-thumbnail

📍쿠키와 세션이란 무엇일까?

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

1. 쿠키

  • 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일입니다.
  • Application - Storage - Cookies(쿠키를 저장하는 저장소) 에 도메인 별로 저장되어 있는게 확인 됩니다.
  • 구성요소
    • Name (이름): 쿠키를 구별하는 데 사용되는 키 (중복될 수 없음)
    • Value (값): 쿠키의 값
    • Domain (도메인): 쿠키가 저장된 도메인
    • Path (경로): 쿠키가 사용되는 경로
    • Expires (만료기한): 쿠키의 만료기한 (만료기한 지나면 삭제됩니다.)

2. 세션

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

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

 

📍쿠키와 세션 비교

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

0개의 댓글