[1주차 TIL] KnockOn Bootcamp 쿠키와 세션

2024. 12. 6. 05:46KnockOn Bootcamp (녹온 부트캠프 3기)

1. 쿠키와 세션

  • 쿠키 (Cookie):
    • 클라이언트(브라우저)에 저장되는 작은 데이터 조각.
    • 주로 사용자 인증 상태 유지, 사용자 설정 저장에 사용.
    • 특징:
      • 키-값 쌍으로 저장.
      • 만료 시간 설정 가능.
      • 서버와 클라이언트가 모두 접근 가능.
    • 단점:
      • 보안 취약점(탈취 가능성).
      • 브라우저 스토리지 공간 제한 (4KB).
  • 세션 (Session):
    • 서버에 저장되는 사용자 상태 정보.
    • 클라이언트는 세션 ID를 쿠키 또는 URL에 저장.
    • 특징:
      • 서버에서 관리하므로 보안성이 높음.
      • 사용자 접속 종료 시 데이터 삭제 가능.
    • 단점:
      • 서버 부하 증가.

2. 쿠키와 세션의 발전 과정

  • 초기 단계:
    • 쿠키로만 사용자 상태 유지.
    • 브라우저에 모든 정보 저장, 보안 및 성능 이슈 발생.
  • 세션 도입:
    • 서버에서 상태 정보 관리, 보안 개선.
    • 사용자 데이터의 분리된 저장 가능.
  • 현대 기술:
    • JWT (JSON Web Token): 상태 정보를 클라이언트에서 관리하면서도 보안성을 높임.

3. JWT (JSON Web Token)

  • 개념:
    • JSON 형식으로 정보를 저장하고 서명하여 인증 및 정보 교환에 사용.
    • 클라이언트-서버 간 상태를 유지하면서 서버 부하를 줄이는 데 효과적.
  • 구조:
    1. Header: 알고리즘과 타입 정보.
    2. Payload: 데이터(예: 사용자 ID, 권한).
    3. Signature: 서명, 데이터 위변조 방지.
  • 장점:
    • 무상태(stateless) 인증.
    • 서버 확장성 증가.
  • 단점:
    • 토큰 크기가 크고, 만료 전까지 재사용 가능(보안 위협).

4. 브라우저 저장소

  • 로컬스토리지 (LocalStorage):
    • 클라이언트에 영구적으로 데이터 저장.
    • 용량: 약 5~10MB.
    • 특징:
      • 만료 시간 없음.
      • 도메인 기반 접근 제한.
  • 세션스토리지 (SessionStorage):
    • 세션이 유지되는 동안 데이터 저장.
    • 용량: 약 5~10MB.
    • 특징:
      • 브라우저 탭을 닫으면 데이터 삭제.
  • 쿠키:
    • 서버와 클라이언트 모두 접근 가능.
    • 용량: 약 4KB.
  • IndexedDB:
    • 클라이언트에 대용량 데이터 저장 가능.
    • 특징:
      • 비관계형 데이터베이스.
      • 트랜잭션 처리 지원.