
웹사이트를 이용하면서 ‘자동 로그인’, ‘장바구니 유지’, ‘마지막 방문 페이지로 복귀’ 같은 기능을 자주 접하게 됩니다. 이 모든 기능이 어떻게 작동할 수 있을까요? 바로 쿠키(Cookie)와 세션(Session)이라는 기술 덕분입니다. 이 두 기술은 웹에서 사용자 상태를 유지하고 정보를 관리하는 핵심 수단이지만, 구조와 작동 방식은 크게 다릅니다. 이번 글에서는 쿠키와 세션의 기술적 차이를 명확하게 구분하고, 각각의 장단점과 활용 사례를 분석합니다.
- 1. 쿠키와 세션의 기본 개념과 필요성
- 2. 쿠키의 구조와 동작 방식
- 3. 세션의 구조와 동작 방식
1. 쿠키와 세션의 기본 개념과 필요성
웹은 기본적으로 Stateless Protocol, 즉 상태를 저장하지 않는 구조입니다. 사용자가 어떤 페이지를 방문했는지, 로그인 상태인지 등을 브라우저와 서버는 자동으로 기억하지 못합니다. 이를 해결하기 위한 방법이 바로 쿠키와 세션입니다.
- 쿠키(Cookie): 클라이언트(브라우저)에 저장되는 작은 데이터 조각
- 세션(Session): 서버에 저장되는 사용자 상태 정보
이 두 기술은 사용자의 식별과 상태 유지를 위해 다음과 같은 목적으로 활용됩니다:
- 로그인 유지
- 장바구니 상태 유지
- 방문 기록 저장
- 사용자 맞춤형 추천
쿠키와 세션이 없다면 웹은 매번 새로운 사용자처럼 반응할 것이며, 사용자 경험은 매우 불편해질 것입니다.
2. 쿠키의 구조와 동작 방식
쿠키(Cookie)는 웹 서버가 사용자의 브라우저에 저장하도록 명령한 작은 텍스트 파일입니다. 이 파일은 사용자가 다시 사이트를 방문할 때 자동으로 서버에 전송되어 사용자 식별이 가능하게 합니다.
📌 쿠키의 구조
- 이름(name)
- 값(value)
- 만료일자(Expires)
- 경로(Path)
- 도메인(Domain)
- 보안 설정(Secure, HttpOnly 등)
✅ 쿠키의 작동 과정
- 사용자가 로그인하면 서버는 사용자 ID를 기반으로 쿠키를 생성해 브라우저로 전송
- 브라우저는 이 쿠키를 로컬에 저장
- 사용자가 동일 사이트를 재방문할 때 브라우저가 자동으로 쿠키를 서버에 포함시켜 전송
- 서버는 쿠키 정보를 통해 사용자 상태를 식별
⚠️ 쿠키의 한계점
- 보안 취약성: 사용자의 컴퓨터에 저장되므로 변조·탈취 우려가 있음
- 용량 제한: 대부분 브라우저에서 쿠키 하나당 약 4KB 제한
- 브라우저 의존성: 쿠키가 삭제되거나 차단될 수 있음
3. 세션의 구조와 동작 방식
세션(Session)은 클라이언트가 웹 서버와 상호작용하는 동안 서버에 저장되는 상태 정보입니다. 쿠키와 달리 클라이언트에 정보가 직접 저장되지 않기 때문에 보안 측면에서 더 안전합니다.
📌 세션의 기본 구성
- 세션 ID: 고유한 문자열, 클라이언트와 서버 간 상태 유지의 열쇠
- 세션 저장소: 서버 메모리, 파일 시스템, Redis, 데이터베이스 등
- 세션 타임아웃: 일정 시간 이후 자동 만료
✅ 세션의 작동 과정
- 사용자가 로그인하면 서버는 고유한 세션 ID를 생성
- 해당 세션 ID를 사용자에게 전달하고, 서버에는 ID에 대응되는 사용자 데이터를 저장
- 이후 요청 시 세션 ID가 쿠키 또는 URL 파라미터 등을 통해 서버에 전달됨
- 서버는 세션 ID로 사용자 상태를 파악해 응답 처리
⚠️ 세션의 단점
- 서버 자원 사용: 모든 사용자 상태가 서버에 저장되므로 메모리 부담
- 로드밸런싱 이슈: 서버 간 세션 공유를 위한 별도 세션 저장소 필요
- 세션 하이재킹 위험: 세션 ID 탈취 시 인증된 상태로 가장 가능
이를 해결하기 위해 최근에는 JWT(JSON Web Token) 같은 인증 방식과 병행해 사용하는 사례가 많아지고 있습니다.
쿠키와 세션은 웹서비스 운영에 필수적인 상태 유지 기술입니다. 쿠키는 클라이언트에 저장되어 접근이 쉬우나 보안상 주의가 필요하며, 세션은 서버에서 관리되어 보안성이 높지만 서버 자원을 소모합니다. 두 기술 모두의 특성을 이해하고 목적에 맞게 선택하거나 병행 사용하는 것이 가장 이상적입니다. 특히 보안이 중요한 로그인, 결제 등에서는 세션 위주의 설계가 권장됩니다. 웹서비스의 기본을 탄탄히 하기 위해, 쿠키와 세션 구조를 정확히 이해하는 것은 필수입니다.