인터넷을 하다 보면 한 번 로그인한 뒤, 다음 날 다시 들어가도 계속 로그인된 상태인 경우가 많다.
쇼핑몰 사이트에 들어갔는데 장바구니가 그대로 남아 있기도 하고, 유튜브를 열었더니 내가 전에 보던 영상이 그대로 뜨기도 한다.
처음에는 그냥 사이트가 기억하고 있는 줄 알았다. 그런데 사실은 웹사이트가 사용자를 기억하기 위해 ‘쿠키’와 ‘세션’을 사용하고 있는 것이다.
프로그래밍을 배우다 보면 쿠키와 세션이라는 단어를 정말 자주 보게 된다. 그런데 둘 다 “로그인 유지”와 관련 있다고 해서 더 헷갈린다.
나도 처음에는 둘이 거의 같은 것인 줄 알았다. 하지만 알고 보니 쿠키와 세션은 저장되는 위치부터 완전히 다르다.

웹사이트는 원래 사용자를 기억하지 못한다
쿠키와 세션을 이해하려면 먼저 웹사이트가 원래는 사용자를 기억하지 못한다는 것을 알아야 한다.
예를 들어 사용자가 로그인 버튼을 눌렀다고 해보자.
그러면 서버는 “이 사람은 로그인에 성공했다”는 것을 잠깐 안다.
하지만 사용자가 다른 페이지로 이동하면, 서버는 그 사람이 아까 로그인했던 사람인지 알 수 없다.
왜냐하면 웹사이트는 페이지를 새로 열 때마다 매번 새로운 요청으로 생각하기 때문이다.
즉, 서버 입장에서는:
- 첫 번째 요청 → 로그인
- 두 번째 요청 → 다른 사람일 수도 있음
- 세 번째 요청 → 또 새로운 요청
처럼 보인다.
그래서 웹사이트는 사용자를 기억하기 위해 쿠키나 세션을 사용한다.
쿠키는 내 컴퓨터에 저장된다
쿠키(Cookie)는 웹사이트가 내 컴퓨터나 브라우저에 저장하는 작은 정보다.
예를 들어 로그인에 성공하면, 웹사이트는 브라우저 안에 이런 정보를 저장할 수 있다.
user = mary
theme = dark
그러면 다음에 사이트에 다시 들어갔을 때, 브라우저가 이 쿠키를 서버에게 같이 보낸다.
서버는 “아, 이 사용자는 전에 로그인했던 사람이구나”라고 알 수 있다.
즉, 쿠키는 사용자의 컴퓨터에 저장되는 메모장 같은 것이다.
예를 들어:
- 자동 로그인
- 다크 모드 설정
- 장바구니 내용
- 최근 본 상품
같은 것들이 쿠키에 저장될 수 있다.
세션은 서버에 저장된다
반면 세션(Session)은 서버가 가지고 있는 정보다.
예를 들어 사용자가 로그인하면, 서버는 자기 안에:
1234 → Mary 로그인됨
같은 정보를 저장한다.
그리고 브라우저에는 단지:
session_id = 1234
만 저장한다.
즉, 실제 중요한 정보는 서버에 있고, 브라우저에는 그 정보를 찾기 위한 번호만 들어 있는 것이다.
쉽게 말하면:
- 쿠키 = 내가 직접 들고 다니는 메모
- 세션 = 서버 보관함에 맡기고, 번호표만 들고 다니는 것
이라고 생각하면 이해하기 쉽다.
왜 세션이 더 안전하다고 할까
쿠키는 사용자의 컴퓨터에 저장되기 때문에, 사용자가 직접 볼 수도 있고 수정할 수도 있다.
예를 들어 쿠키 안에:
is_admin = true
같은 정보가 들어 있다면, 누군가가 그 값을 바꿔버릴 수도 있다.
그래서 중요한 정보는 쿠키에 그대로 저장하면 위험하다.
반면 세션은 실제 데이터가 서버 안에 있기 때문에 사용자가 직접 수정하기 어렵다.
브라우저에는 session_id만 있고, 서버가 그 번호를 보고 정보를 찾는다.
그래서 로그인 정보나 권한처럼 중요한 것은 보통 세션에 저장한다.
즉:
- 쿠키 = 편하지만 덜 안전함
- 세션 = 조금 더 복잡하지만 안전함
이라는 차이가 있다.
그런데 세션도 결국 쿠키를 사용한다
여기서 더 헷갈리는 부분이 있다.
세션은 서버에 저장된다면서, 왜 브라우저에도 뭔가 저장된다고 할까?
이유는 세션도 결국 사용자를 구분해야 하기 때문이다.
그래서 서버는 session_id를 브라우저의 쿠키 안에 저장한다.
즉:
- 사용자가 로그인한다.
- 서버가 session_id를 만든다.
- 브라우저는 그 번호를 쿠키로 저장한다.
- 다음 요청 때마다 session_id를 서버로 보낸다.
- 서버는 그 번호를 보고 로그인 정보를 찾는다.
즉, 세션은 서버에 저장되지만, 세션을 찾기 위한 번호는 쿠키를 통해 전달된다.
그래서 많은 사람이 쿠키와 세션을 함께 사용한다.
쿠키와 세션의 차이를 한눈에 보면
|
구분 |
쿠키 |
세션 |
|---|---|---|
| 저장 위치 | 브라우저 | 서버 |
| 보관 내용 | 실제 데이터 | 실제 데이터 |
| 브라우저에는? | 실제 데이터가 있음 | session_id만 있음 |
| 보안 | 낮음 | 높음 |
| 주로 사용 | 자동 로그인, 설정 저장 | 로그인 정보, 권한 관리 |
왜 자동 로그인은 쿠키를 많이 사용할까
예를 들어 “로그인 상태 유지”를 체크하면, 사이트는 쿠키를 오래 저장한다.
그래서 브라우저를 껐다 켜도 쿠키가 남아 있고, 다시 사이트에 들어가면 자동으로 로그인된다.
반면 세션은 브라우저를 닫거나 시간이 지나면 사라지는 경우가 많다.
그래서:
- 짧게 유지할 로그인 → 세션
- 오래 유지할 로그인 → 쿠키
처럼 사용하는 경우가 많다.
예를 들어 쇼핑몰 사이트는 로그인 자체는 세션으로 처리하고, “로그인 유지” 옵션은 쿠키로 저장하기도 한다.
내가 직접 쿠키를 볼 수도 있을까
사실 쿠키는 브라우저에서 직접 볼 수 있다.
크롬에서는 F12를 누른 뒤, Application → Cookies를 열면 사이트가 저장한 쿠키를 확인할 수 있다.
처음 보면 이상한 영어와 숫자가 많아서 놀랄 수 있다.
나도 처음에는 그 화면을 보고 “이게 다 뭐지?” 싶었다. 그런데 자세히 보니까 session_id나 로그인 관련 값들이 들어 있었다.
그래서 쿠키와 세션은 그냥 어려운 개념이 아니라, 우리가 매일 사용하는 웹사이트 안에서 실제로 계속 사용되고 있는 기능이다.
한 줄로 정리하면
쿠키는 브라우저에 저장되는 정보이고, 세션은 서버에 저장되는 정보다.
그리고 대부분의 웹사이트는:
- 설정 저장 → 쿠키
- 로그인 정보 → 세션
처럼 둘을 함께 사용해서 사용자를 기억한다.