본문 바로가기
기획자가 알아야 할 IT지식

쿠키, 세션, 토큰 – 웹에서 나를 기억하는 방법! 🍪🔑

by 일잘러로 살기 2025. 2. 5.

웹사이트에 로그인하면 다시 방문해도 로그인 상태가 유지되거나, 장바구니에 담아둔 상품이 그대로 있는 걸 본 적 있나요?
이게 가능한 이유는 쿠키, 세션, 토큰 덕분이에요!

이 세 가지는 사용자의 상태를 기억하는 기술이지만, 작동 방식이 조금씩 다릅니다.
오늘은 쿠키, 세션, 토큰의 차이점과 사용 사례를 쉽게 정리해볼게요! 🚀


1. 쿠키(Cookie) – 작은 데이터 파일! 🍪

정의

  • 쿠키는 사용자의 브라우저에 저장되는 작은 데이터 조각입니다.
  • 웹사이트가 방문자의 로그인 정보, 장바구니, 언어 설정 등을 저장하는 용도로 사용하죠.

특징

  • 클라이언트(브라우저)에 저장됨
  • 서버가 쿠키를 생성하고, 클라이언트가 요청할 때마다 함께 전송
  • 만료 기간을 설정할 수 있음(예: 7일 후 자동 삭제)
  • 보안에 취약할 수 있어 민감한 정보 저장은 금지

🎯 예시

  • 자동 로그인: "로그인 상태 유지" 옵션을 선택하면 쿠키에 로그인 정보 저장
  • 쇼핑몰 장바구니: 로그인하지 않아도 장바구니 상품이 유지됨
  • 사이트 방문 기록 저장: 이전 방문 데이터를 기억해 맞춤형 광고 제공

📌 한마디로?
쿠키는 사용자의 브라우저에 저장되어 웹사이트가 나를 기억할 수 있도록 도와주는 작은 파일!


2. 세션(Session) – 서버가 기억하는 사용자 정보! 🗂️

정의

  • 세션은 서버에서 관리하는 사용자 상태 정보입니다.
  • 브라우저가 닫히거나, 일정 시간이 지나면 사라져요.

특징

  • 서버에서 관리됨 (클라이언트가 아니라 서버 측에서 저장)
  • 사용자가 로그인하면 세션 ID를 발급하고, 이 ID를 쿠키에 저장
  • 일정 시간이 지나면 자동으로 삭제됨 (예: 30분)
  • 쿠키보다 보안성이 높지만, 서버 부하가 발생할 수 있음

🎯 예시

  • 로그인 정보 유지: 로그인하면 서버가 세션을 생성해 로그인 상태를 유지
  • 온라인 시험 시스템: 시험 도중 세션이 만료되면 자동 로그아웃
  • 은행 사이트: 일정 시간 동안 활동이 없으면 보안을 위해 자동 로그아웃

📌 한마디로?
세션은 서버에서 사용자 정보를 관리하는 방식으로, 로그인 상태 유지에 자주 사용됨!


3. 토큰(Token) – 인증의 새로운 패러다임! 🔑

정의

  • 토큰은 **사용자 인증을 위한 키(문자열)**입니다.
  • 로그인할 때 서버에서 토큰을 발급하고, 이후 요청 시 이 토큰을 사용해 인증합니다.

특징

  • 클라이언트(브라우저, 앱 등)에 저장됨
  • 쿠키와 다르게 서버에서 세션을 유지할 필요 없음 (무상태)
  • 보통 JWT(Json Web Token) 형식으로 많이 사용됨
  • 모바일/웹/다양한 환경에서 인증 가능
  • 보안성이 높고 확장성이 뛰어남

🎯 예시

  • OAuth 로그인: 카카오, 구글 로그인 API 사용 시 토큰 발급
  • JWT 인증 시스템: 로그인 후 JWT 토큰을 발급받아 API 요청 시 사용
  • 서버 간 인증: API 서버 간의 보안 인증에도 사용

📌 한마디로?
토큰은 서버가 사용자를 기억하지 않아도 인증을 유지할 수 있는 보안 방식!


4. 한눈에 비교하기!

  쿠키 세션 토큰
저장 위치 클라이언트(브라우저) 서버 클라이언트(로컬 스토리지, 쿠키)
사용 목적 간단한 사용자 정보 저장 로그인 상태 유지 사용자 인증(보안 강화)
유효 기간 설정 가능 (예: 7일) 브라우저 종료 또는 일정 시간 후 만료 일반적으로 짧은 유효 기간
보안성 취약 (조작 가능) 상대적으로 안전하지만 서버 부담 발생 보안성이 높음 (암호화된 JWT 사용)
서버 부담 없음 있음 (세션 유지 필요) 없음 (서버에서 상태 저장 안 함)
사용 사례 자동 로그인, 장바구니 로그인 세션 유지 API 인증, OAuth 로그인

5. 언제 쿠키/세션/토큰을 사용할까?

쿠키가 적합한 경우

  • 로그인 상태를 장기적으로 유지할 때 (예: "로그인 유지" 체크)
  • 쇼핑몰의 장바구니 같은 간단한 데이터 저장
  • 개인화된 환경 설정 (예: 다크 모드, 언어 설정)

세션이 적합한 경우

  • 로그인 상태를 일정 시간 동안 유지할 때
  • 보안이 중요한 서비스 (예: 은행 사이트, 결제 시스템)
  • 사용자의 행동을 서버에서 관리해야 할 때

토큰이 적합한 경우

  • API 기반 인증 시스템 (예: 모바일, 웹, 서버 간 통신)
  • OAuth 기반 로그인 (구글, 카카오, 네이버 로그인)
  • 분산 시스템에서 인증이 필요할 때 (예: 마이크로서비스)

6. 한 줄 요약!

📌 쿠키: 사용자의 브라우저에 저장되는 작은 데이터 파일, 간단한 정보 유지에 적합!
📌 세션: 서버에서 사용자 정보를 관리하는 방식, 로그인 유지에 자주 사용됨!
📌 토큰: 서버가 사용자를 기억하지 않아도 인증할 수 있는 방식, 보안성이 뛰어남!