쿠키, 세션, 토큰

밀초·2025년 3월 26일
0

spring

목록 보기
22/34

쿠키, 세션, 토큰은 사용자 인증을 거친다는 점에서는 동일하지만, 사용자를 인증하는 방식에서 차이가 있습니다.

쿠키

쿠키는 다른 인증 방식에 비해 간단하게 구현이 가능하다는 장점을 갖고 있습니다. 그리고 사용자의 정보를 클라이언트 브라우저에 저장한다는 특징이 있습니다. 그러나 이는 클라이언트가 세션 정보를 직접 수정할 수 있기 때문에, 쿠키는 다른 인증 방식에 비해 보안이 취약하다는 특성을 갖습니다.

  • 사용 예시: 아이디 저장, 자동 로그인

세션

세션은 쿠키와는 다르게 사용자 정보를 서버에 저장하고, 브라우저에는 세션ID만을 저장하고 통신합니다. 쿠키에 비해 보안이 뛰어나며, 더 높은 확장성을 가지고 있습니다. 그러나 서버 메모리를 사용하기 때문에, 메모리에 대한 부담이 증가하며, 여전히 세션 탈취와 같은 공격에 취약합니다.

  • 사용 예시: 로그인 상태 유지

토큰

토큰은 사용자가 로그인하면 인증 토큰을 발급을 받는 과정이 필요합니다. 발급된 토큰은 매 요청마다 HTTP 헤더에 토큰을 실어서 보내는 형식으로 통신하는 특징이 있어 사용자의 상태를 서버에서 저장하거나 유지하지 않습니다. 그리고 토큰은 서버에 요청이 올 때마다 사용자를 검증하는 과정을 거칩니다.
그러나 토큰도 세션과 마찬가지로, 토큰 탈취라는 위험성이 존재합니다. 따라서, 토큰의 payload에 민감한 정보를 담지 않고 안전하게 사용하면, 쿠키나 세션보다 확장성과 보안성이 높은 인증 방식이 될 수 있습니다.

  • 사용 예시: API 인증/인가

구분

구분저장 위치보안성서버 부하사용 예시
쿠키브라우저(클라이언트)낮음없음아이디 저장, 자동 로그인
세션서버중간 (세션 탈취)높음 (사용자 많을수록 부담 증가)로그인 상태 유지
토큰 (JWT)클라이언트높음낮음API 인증/인가
profile
안녕하세요 :) 성장하는 개발자 밀초입니다 !

0개의 댓글