쿠키, 세션, 토큰

신수정·2024년 4월 15일

웹 애플리케이션에서 사용자의 신원을 확인하고 상태를 유지하는 것은 필수적인 부분입니다. 이를 위해 쿠키, 세션, 그리고 토큰과 같은 기술들이 사용됩니다. 이번 포스트에서는 각 기술의 작동 원리와 장단점을 살펴보고, 어떻게 이들이 웹 보안과 상호작용에 영향을 미치는지 알아보겠습니다.

1. 쿠키(Cookies)

쿠키는 웹서버가 사용자의 웹 브라우저에 저장하는 작은 데이터 파일입니다. 사용자가 서버에 페이지를 요청할 때마다 웹 브라우저는 쿠키를 함께 서버로 전송하며, 이를 통해 서버는 사용자를 식별할 수 있습니다. 예를 들어, 쿠키는 사용자가 사이트에 로그인한 상태를 유지하거나 쇼핑 사이트에서 장바구니의 상태를 기억하는 데 사용됩니다.

장점

  • 간단하고 효율적인 사용자 식별 가능
  • 클라이언트 측에서 쉽게 관리할 수 있음

단점

  • 보안 취약점: 쿠키 데이터가 암호화되지 않은 경우 탈취되거나 조작될 수 있음
  • 데이터 크기 제한 (대략 4KB)

2. 세션(Sessions)

세션은 서버에서 사용자 정보를 저장하는 방식입니다. 서버는 세션 ID를 생성하여 쿠키에 저장하고, 이 ID를 통해 서버에 저장된 사용자 정보에 접근합니다. 세션은 사용자가 로그인하면 시작되고 로그아웃하면 종료되며, 이 과정에서 사용자 정보는 서버에 안전하게 보관됩니다.

장점

  • 보안성: 사용자 정보가 서버에 저장되기 때문에 쿠키보다 안전
  • 무한한 데이터 저장: 쿠키의 크기 제한 없이 데이터를 저장할 수 있음

단점

  • 서버 자원 사용: 많은 사용자가 접속하면 서버에 부담
  • 확장성 문제: 서버가 여러 대인 환경에서 세션 관리가 복잡

3. 토큰(Tokens)

토큰 기반 인증은 특히 Single Page Applications(SPA)에서 선호되는 인증 방식입니다. JSON Web Tokens(JWT) 같은 토큰은 사용자의 인증 정보를 암호화된 형태로 클라이언트에 저장하고, 클라이언트는 서버로 요청을 보낼 때마다 이 토큰을 함께 보냅니다. 서버는 토큰을 검증하고 요청을 처리합니다.

장점

  • 확장성: 세션보다 관리가 쉬워 대규모 애플리케이션에 적합
  • 플랫폼 독립성: 모바일 앱과 같은 다양한 플랫폼에서 사용 가능

단점

  • 보안 문제: 토큰이 탈취되면 악용될 수 있음
  • 복잡한 구현: 토큰의 생성과 검증 과정이 세션보다 복잡할 수 있음
profile
안녕하세요:)

0개의 댓글