쿠키, 세션, 토큰

김이·2024년 11월 12일

쿠키, 세션, 토큰은 웹 애플리케이션에서 사용자 상태와 인증을 관리하는 주요 기술이다. 이들은 모두 사용자의 상태를 유지하는 역할을 하지만, 저장 위치, 보안성, 사용 방식에서 차이가 있다. 아래에서 각각의 정의와 차이점을 설명한다.

정의

쿠키는 클라이언트 측(사용자의 브라우저)에 저장되는 작은 데이터이다. 웹 서버가 클라이언트에게 정보를 저장하도록 쿠키를 전달하며, 이후 같은 웹 서버에 재접속할 때 브라우저가 해당 쿠키를 서버로 전송한다.

특징

•	저장 위치: 클라이언트 브라우저에 저장된다.
•	유효 기간: 만료 시간을 설정할 수 있으며, 만료 시간을 설정하면 브라우저를 닫아도 해당 시간까지 유지된다.
•	보안: 클라이언트에 직접 저장되므로 보안에 취약할 수 있다. 중요한 데이터는 암호화하여 저장하거나 쿠키가 아닌 세션이나 토큰을 사용하는 것이 좋다.

주요 사용 사례

로그인 상태 유지, 사용자 맞춤 설정, 쇼핑카트 등 비교적 간단한 상태 정보를 저장할 때 사용된다.

2. 세션 (Session)

정의

세션은 서버 측에 저장되는 사용자 상태 정보이다. 세션은 클라이언트에 세션 ID라는 식별자를 부여하고, 해당 ID를 통해 서버가 사용자를 식별한다. 클라이언트가 서버에 요청을 보낼 때 세션 ID를 함께 전송하여 서버는 특정 사용자의 세션 정보를 확인할 수 있다.

특징

•	저장 위치: 서버에 저장된다. 클라이언트에는 세션 ID만 쿠키 또는 URL을 통해 전달된다.
•	유효 기간: 브라우저가 닫히면 일반적으로 세션도 종료된다. 단, 서버 설정에 따라 세션 유지 시간을 연장할 수 있다.
•	보안: 서버에서 관리되므로 비교적 안전하다. 민감한 사용자 정보는 세션에 저장하는 것이 일반적이다.

주요 사용 사례

로그인 정보 관리, 사용자의 개인화된 설정 관리 등 보안이 필요한 정보의 관리에 적합하다.

3. 토큰 (Token)

정의

토큰은 인증된 사용자임을 증명하기 위해 서버가 발급하는 인증 정보로, 주로 JSON Web Token (JWT) 형태로 사용된다. 토큰은 보통 사용자 로그인 시 서버가 생성하여 클라이언트에 전달하며, 클라이언트는 이후 서버와의 요청 시 이 토큰을 포함하여 인증을 받는다.

특징

•	저장 위치: 클라이언트(주로 브라우저의 로컬 스토리지 또는 세션 스토리지)에 저장된다.
•	유효 기간: 토큰에는 자체적으로 만료 시간이 포함되어 있어 시간이 지나면 자동으로 만료된다. 서버에서 유효성 검사를 통해 토큰을 확인하고 갱신할 수 있다.
•	보안: 토큰에는 사용자 정보가 포함될 수 있지만, 민감한 정보는 포함하지 않는 것이 좋다. 암호화되어 있어 변조하기 어려운 점에서 보안성이 뛰어나며, HTTPS 통신을 통해 안전하게 사용할 수 있다.

주요 사용 사례

JWT 같은 토큰을 이용한 인증 시스템에서 주로 사용된다. 특히 RESTful API나 마이크로서비스 구조에서 인증 토큰으로 널리 활용된다.

차이점 요약

구분쿠키 (Cookie)세션 (Session)토큰 (Token)
저장 위치클라이언트 브라우저에 저장서버 측에 저장클라이언트 (로컬 스토리지 또는 세션 스토리지)
유효 기간만료 시간 설정 가능브라우저 종료 시 소멸 (기본)만료 시간이 자체적으로 포함됨
보안성클라이언트에 저장되어 보안에 취약할 수 있음서버에서 관리하여 비교적 안전암호화되어 변조가 어려움
사용 용도간단한 상태 정보 저장민감한 사용자 정보 관리RESTful API 인증 및 권한 부여
profile
공부!

0개의 댓글