공부 내용 정리

Cookie, Session, JWT로 만드는 웹 인증

blockchoin 2025. 7. 25. 17:16

웹 개발을 하다 보면 사용자 인증(로그인)기능은 아주 작은 웹사이트라고 래도 꼭 들어가 있는 필수 기능 중 하나 입니다. 이 웹 인증 기능을 구현하는 세가지 방법 Cookie, Session, JWT에 대해 알아 보겠습니다.


1. 쿠키(Cookie)란?

(1) 정의

쿠키는 브라우저(클라이언트) 가 가지고 있는 작은 데이터 저장소입니다. 서버가 브라우저에게 전달하면, 브라우저는 쿠키를 로컬에 저장하고 자동으로 요청마다 함께 전송합니다.

(2) 특징

  • 저장 위치: 클라이언트 (브라우저)
  • 크기 제한: 약 4KB
  • 용도: 로그인 상태 유지, 장바구니 저장, 최근 본 상품 등

2. 세션(Session) 이란?

(1) 정의

세션은 서버에서 생성하고 관리하는 사용자 정보 저장소입니다. 브라우저가 서버에 접속하면, 서버는 세션 ID를 생성하고 쿠키에 담아 브라우저에 전달합니다.

(2) 특징

  • 저장 위치: 서버 (메모리, Redis 등)
  • 클라이언트는 세션 ID만 가짐
  • 로그아웃이나 시간이 지나면 만료됨
  • 장단점
장점 단점
민감한 데이터는 서버에 보관 서버 메모리 사용 증가
비교적 보안성이 높음 서버 확장 시 세션 공유 필요 (예: Redis)

(3) 작동 흐름

  1. 로그인 → 서버가 세션 ID 생성
  2. 쿠키로 클라이언트에게 전달
  3. 클라이언트가 세션 ID 포함하여 요청
  4. 서버는 세션 ID로 사용자 정보 조회
 

3. JWT (JSON Web Token)란?

(1) 정의

JWT는 로그인 정보를 JSON 형태로 암호화한 토큰입니다. 서버가 발급하고, 클라이언트는 이 토큰을 저장 후 요청 시 함께 전송합니다. 세션과 달리 서버가 토큰을 저장하지 않음(Stateless).

(2) 구조

헤더.페이로드.서명

(3) 특징

  • 저장 위치: 브라우저 (주로 LocalStorage 또는 쿠키)
  • 서버는 JWT를 저장하지 않음
  • 서명(시그니처)으로 위변조 방지
  • 장단점
장점 단점
서버가 사용자 상태를 기억할 필요 없음 토큰 탈취 시 정보가 유출될 수 있음
서버 확장 쉬움 로그아웃 처리 어려움
빠른 응답 가능 토큰 만료 및 갱신 처리 필요
 

4. 쿠키 vs 세션 vs JWT 비교표

 

  쿠키 세션 JWT
저장 위치 클라이언트 서버 클라이언트
용량 제한 약 4KB 서버 메모리 한도 보통 수 KB ~ 수십 KB
서버 확장 쉽다 어려움 (세션 공유 필요) 쉽다
보안성 중간 (암호화 가능) 높음 중간~낮음 (토큰 탈취 주의)
로그아웃 직접 삭제 필요 서버에서 삭제 클라이언트에서 토큰 삭제
상태관리 무상태 상태 기반 무상태
 

5. 공통 보안 사항 (쿠키 / 세션 / JWT )

  • HTTPS 사용 필수: 민감한 데이터 전송 시 반드시 HTTPS 사용
  • HttpOnly, Secure 옵션 설정: 쿠키 탈취 방지
  • Access Token / Refresh Token 분리: JWT 사용 시 권장
  • 토큰 만료 시간 짧게 설정: 유출 시 피해 최소화

6. 마무리

Cookie, Session, JWT는 웹 인증을 구성하는 중요한 기술입니다. 각각의 특성과 쓰임새를 잘 이해하고, 상황에 따라 적절히 선택하는 것이 중요합니다.

  • 간단한 인증 → 쿠키
  • 보안 중심 인증 → 세션
  • 확장성 / 모바일 / SPA → JWT

 

'공부 내용 정리' 카테고리의 다른 글

Nest.js란?  (0) 2025.07.28
Next.js 란?  (1) 2025.07.28
OpenZeppelin이란?  (3) 2025.07.25
Express 기초 개념과 자주 쓰는 문법 정리  (0) 2025.07.24
Express.js로 만들어진서버-클라이언트  (0) 2025.07.23