Introduction
클라이언트의 상태 정보를 유지하기 위한 별도의 기술이 필요한데 이를 해결하기 위한 대표적인 방식이 바로 쿠키와 세션이다.
두 기술 모두 클라이언트 식별 및 상태 유지를 위한 수단이지만, 저장 위치와 보안성, 용도에 따라 차이가 존재한다.
이 글에서는 쿠키와 세션의 구조, 차이점, 보안 관점에서의 고려사항까지 함께 살펴보자
쿠키(Cookie) VS 세션(Session)
1. 쿠키(cookie)란?
클라이언트(브라우저)에 상태 정보를 저장하는 방식이다.
쿠키는 사용자들이 웹 사이트를 편리하게 이용할 수 있도록 하기 위한 목적으로 만들어졌으며, 사용자가 인터넷 웹 사이트에 방문할 때 생기는 4KB 이하의 파일을 말한다.
쿠키에는 사용자와 웹 사이트를 연결해 주는 정보가 담겨져 있기 때문에 나중에 클라이언트가 해당 사이트에 접속하려고 할 때 이 쿠키 내용을 이용하여 클라이언트의 신분을 알 수 있게 해준다.
쿠키를 통해 사용자 식별 및 세션 유지를 통해 클라이언트와 서버간의 상태 관리를 한다. 쿠키의 종류는 지속 쿠키, 세션 쿠키가 있으며 일반적으로 말하는 쿠키=지속 쿠키, 세션=세션 쿠키 이다.
1.1 쿠키 헤더 구조
# Set-cookie
Set-cookie: name=value; expires=[Data]; domain=[Domain]; path=[Path]; [secure]
# Cookie 헤더 구조
Cookie: name1=value1 [; name2=value2] [; name3=value3] ...
: 웹 서버는 Set-cookie 헤더를 통해 클라이언트에게 쿠키를 발급하며, 클라이언트는 이후 요청 시 해당 쿠키를 Cookie 헤더에 담아 서버로 전송한다. 이를 통해 로그인 유지, 장바구니 저장, 사용자 맞춤 추천 등 다양한 기능이 구현된다.
1.1 쿠키의 문제점
쿠키를 폐기하여도 해당 값을 알고 있으면 재사용이 가능한 문제점이 있다. 즉, 폐기 후에도 재사용이 가능하다는 것이다. 또한 쿠키 값이 평문일 경우 변조의 위협이 있기 때문에 사용자 식별 및 인증 관리를 할 경우 반드시 암호화 과정을 거쳐야 한다. 또한 쿠키의 유효기간에 따른 폐기 방법, 암호화 알고리즘에 대한 적절성 등을 잘 검토하여 쿠키 발급 로직을 구현해야 함
2. 세션(Session)이란?
서버에 클라이언트 상태 정보를 저장하는 방식이다.
서버는 개별 클라이언트 세션을 식별하기 위해 세션ID를 부여하고 세션ID는 세션 쿠키를 이용하여 클라이언트와 서버 간에 주고 받는다. 클라이언트 상태 정보를 서버에 저장하기 때문에 쿠키 방식에 비해 보안상 안전하다.
2.1 세션 폐기 과정
- 서버에 있는 걸 지워버리면 된다. → 그래서 재사용이 되지 않기 때문에 서버에서 폐기 시켜야한다.
세션쿠키를 사용하지 않고, 왜 계속 지속 쿠키를 사용할까?
대규모 웹 서비스의 경우 수 많은 사용자들의 세션을 관리하기에는 서버에 엄청난 부하를 가져온다. 이러한 이유로 서버에 부담이 낮은 지속 쿠키 사용을 선호한다. (웹 서비스 규모와 인프라 구성에 알맞게 사용해야 함)
따라서 중요정보(개인정보, 신용정보 등)를 저장할 경우에는 쿠키 방식이 아닌 서버에 상태정보를 저장하는 세션 방식이 안전하며 부득이하게 쿠키를 사용해야 할 경우에는 암호화를 적용해야 한다.
메모리, 파일 시스템에 저장을 잘 하지 않고 그나마 DB에 저장을 하는데 성능상 좋지 않기 때문에 쿠키를 사용하는 경우도 있다.
'Knowledge' 카테고리의 다른 글
[Knowledge] Active Directory(AD) (3) | 2025.08.21 |
---|---|
[Knowledge] 캐시(Cache)와 캐싱(Caching) (0) | 2025.07.21 |
[Knowledge] Basic 인증과 Bearer 인증 (0) | 2025.07.04 |
[Knowledge] DOM-Based XSS (0) | 2025.06.30 |
[Knowledge] 공인 IP & 사설 IP & NAT의 역할 (0) | 2025.03.19 |