쿠키와 세션

HTTP는 상태를 저장하지 않는 Stateless 특성을 가지고 있습니다. HTTP 상태는 기억되지 않기 때문에 쿠키와 세션을 이용해서 HTTP에 상태 정보를 유지(Stateful)하기 위해 사용합니다. 

 

쿠키와 세션을 통해 서버에서 클라이언트 별로 인증 및 인가가 가능합니다.

 

쿠키 Cookie

  • 클라이언트에 저장 될 목적으로 생성한 파일
  • 개발자도구 - Application - Storage - Cookies 에서 확인 가능
  • 구성 요소
    • Name: 구별하는데 사용되는 키 (중복 x)
    • Value: 쿠키의 값
    • Domain: 쿠키가 저장된 도메인
    • Path: 쿠키가 사용되는 경로
    • Expires: 쿠키의 만료기한
  • 보안에 취약함
    • 클라이언트에서 쿠키 정보를 쉽게 변경, 삭제, 및 가로채기 당할 수 있음

 

세션 Session

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

 

세션 동작 방식

  1. 클라이언트가 서버에 1번 요청
  2. 서버가 세션ID를 생성 -> 응답 헤더에 전달
  3. 클라이언트가 쿠키를 저장 (세션 쿠키)
  4. 클라이언트가 서버에 2번째 요청  - 쿠키값(세션ID) 포함 요청
  5. 서버가 세션ID를 확인 -> 1번 요청과 같은 클라이언트임을 확인

 

쿠키와 세션 비교하기

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

 

 

결론

쿠키와 세션을 통해 클라이언트 별로 인증 및 인가를 할 수 있습니다. 

+ Recent posts