쿠키 & 세션
기술노트
🍪 쿠키 (Cookie) & 세션 (Session)
쿠키와 세션은 HTTP의 무상태(Stateless) 특징을 보완하여, 서버가 클라이언트를 식별하고 상태를 유지하기 위해 사용하는 기술입니다. 주로 로그인 정보 유지, 장바구니, 사용자 맞춤 설정 등에 활용됩니다.
🍪 쿠키 (Cookie)
쿠키는 클라이언트(웹 브라우저)에 저장되는 작은 텍스트 파일입니다. 서버가 클라이언트에 데이터를 저장해두었다가, 다음 요청 시 클라이언트가 해당 데이터를 다시 서버로 보내는 방식으로 동작합니다.
- 저장 위치 : 클라이언트의 웹 브라우저
- 생명 주기 : 설정된 만료 시간까지 유지됨 (브라우저를 닫아도 유지 가능)
- 보안 : 텍스트 형태로 저장되어 탈취 및 변조의 위험이 있음
- 특징 : 서버의 부담을 줄이지만, 보안에 취약하고 저장 용량에 한계가 있음
👤 세션 (Session)
세션은 서버에 저장되는 상태 정보입니다. 서버는 각 클라이언트를 식별하기 위한 고유한 '세션 ID'를 생성하여 쿠키 형태로 클라이언트에게 보내고, 클라이언트는 다음 요청부터 이 세션 ID를 함께 보내 자신을 증명합니다.
- 저장 위치 : 서버
- 생명 주기 : 브라우저가 닫히거나 서버에서 설정한 타임아웃 시간이 지나면 만료됨
- 보안 : 중요한 정보는 서버에 저장되고 클라이언트에게는 식별자만 보내므로 쿠키보다 안전함
- 특징 : 보안에 강하지만, 사용자가 많아지면 서버의 메모리 부담이 커질 수 있음
🆚 주요 차이점 요약
구분 | 쿠키 (Cookie) | 세션 (Session) |
---|---|---|
저장 위치 | 클라이언트 (브라우저) | 서버 |
보안 | 상대적으로 취약 | 상대적으로 안전 |
속도 | 빠름 | 상대적으로 느림 |
서버 부하 | 적음 | 많음 |
생명 주기 | 설정에 따라 영구적일 수 있음 | 브라우저 종료 시 만료 |
💡 개발자 핵심 Point
- 쿠키는 보안에 덜 민감한 정보(자동 로그인, 팝업 다시 보지 않기 등)를 저장하는 데 적합합니다.
- 세션은 로그인 정보, 장바구니 등 보안이 중요한 정보를 다룰 때 사용됩니다.
- 현대 웹 개발에서는 세션의 단점을 보완하고, 분산 환경에 더 적합한 JWT(JSON Web Token)와 같은 토큰 기반 인증 방식도 널리 사용됩니다.