안녕하세요, 여러분의 든든한 IT 길잡이 데브프리입니다.
지난 데브 노트에서는 웹 보안의 기초인 '인증'과 '인가'에 대해 알아보았습니다. 로그인이 성공해서 '인증'을 마쳤다면, 내가 페이지를 이동할 때마다 웹사이트는 어떻게 나를 계속 기억하고 로그인을 유지해 주는 걸까요?
웹의 통신 방식인 HTTP는 기본적으로 '기억 상실증(Stateless)'을 앓고 있습니다. 새로고침을 하거나 다른 페이지로 넘어가는 순간, 방금 전까지 로그인했던 유저가 누구인지 하얗게 잊어버립니다.
이 기억 상실증을 치료하고 "나 아까 로그인했던 데브프리야!"라고 계속 알려주기 위해 탄생한 기술이 바로 쿠키(Cookie), 세션(Session), 그리고 토큰(Token)입니다. 면접 단골 질문이기도 한 이 세 가지 개념을 '놀이공원 입장'에 비유하여 아주 쉽게 정리해 드리겠습니다!
1. 쿠키 (Cookie): 이마에 붙인 포스트잇
쿠키는 서버가 유저의 웹 브라우저(크롬, 사파리 등)에 저장해 두는 아주 작은 텍스트 조각(데이터)입니다.

놀이공원에 비유하자면, 입구에서 직원이 내 이마에 "이 사람 이름은 홍길동이고 3번 놀이기구 탈 수 있음"이라고 적힌 포스트잇(쿠키)을 딱 붙여주는 것과 같습니다. 나는 놀이기구를 탈 때마다 직원에게 이마의 포스트잇을 보여주기만 하면 됩니다.
하지만 치명적인 단점이 있습니다. 누군가 내 이마의 포스트잇을 몰래 떼어가거나, 글씨를 지우고 "무제한 탑승 가능"이라고 조작(해킹)하기가 너무 쉽다는 것입니다. 그래서 보안에 매우 취약하며, 중요한 비밀번호 같은 정보는 절대 쿠키에 저장하면 안 됩니다.
2. 세션 (Session): 놀이공원 VIP 장부와 사물함 열쇠
쿠키의 보안 문제를 해결하기 위해 등장한 것이 세션입니다. 중요한 정보는 브라우저(포스트잇)가 아니라 서버(안전한 금고)에 직접 저장하는 방식입니다.

놀이공원에 비유해 볼까요?
- 내가 입구에 가면 직원이 두꺼운 'VIP 장부(서버 메모리)'에 내 이름과 정보를 안전하게 적어둡니다.
- 그리고 나에게는 알 수 없는 숫자가 적힌 '사물함 열쇠(Session ID)' 하나만 줍니다. (이 열쇠 번호는 쿠키에 저장됩니다.)
- 놀이기구를 탈 때마다 나는 열쇠만 보여줍니다. 직원은 장부를 펼쳐서 "아, 482번 열쇠는 홍길동 님이시군요. 타세요!"라고 확인합니다.
정보가 서버 장부에 있으니 해커가 내 열쇠 번호를 훔쳐가도 내 진짜 비밀번호는 알 수 없어 보안이 뛰어납니다. 하지만 유저가 100만 명이라면 서버는 장부에 100만 명의 정보를 다 적어두고 매번 뒤져봐야 합니다. 즉, 서버에 엄청난 무리(과부하)가 갑니다.
3. 토큰 (Token / JWT): 위조 불가능한 마법의 자유이용권 팔찌
세션의 단점(서버 과부하)을 극복하기 위해 최신 웹 생태계에서 가장 많이 쓰는 기술이 바로 토큰(Token), 그중에서도 JWT(JSON Web Token)입니다.

토큰은 절대 위조할 수 없는 서명이 들어간 '자유이용권 팔찌'입니다.
서버는 유저가 로그인하면 유저 정보와 특별한 '서명(Signature)'을 꾹 찍어서 팔찌(토큰)를 만들어 유저에게 줍니다.
유저가 놀이기구를 타러 오면, 직원은 무거운 장부(세션)를 뒤적거릴 필요가 없습니다. 그저 팔찌에 찍힌 서명이 '우리 놀이공원에서 발급한 게 맞는지'만 1초 만에 스캔하면 끝입니다. 서버가 데이터를 외우고 있을 필요가 없어서 속도가 매우 빠르고, 유저가 폭발적으로 늘어나도 거뜬히 버틸 수 있습니다.
4. 한눈에 비교하는 요약표
| 비교 항목 | 쿠키 (Cookie) | 세션 (Session) | 토큰 (Token / JWT) |
| 저장 위치 | 유저의 웹 브라우저 | 서버의 메모리 | 유저의 브라우저 (로컬 스토리지 등) |
| 비유하자면? | 내 이마에 붙인 포스트잇 | VIP 장부와 사물함 열쇠 | 위조 불가능한 자유이용권 팔찌 |
| 보안성 | 낮음 (조작 및 탈취 쉬움) | 높음 (데이터가 서버에 있음) | 보통 (토큰 자체 탈취 위험은 있음) |
| 서버 부하 | 거의 없음 | 매우 큼 (접속자 많을수록 느려짐) | 적음 (서명만 확인하면 됨) |
| 주 사용처 | 팝업창 닫기 기억, 장바구니 | 전통적인 웹사이트 로그인 | 최신 웹/앱, 간편 로그인(OAuth) |
마무리
정리해 보겠습니다!
- 유저가 직접 정보를 들고 다니면 쿠키,
- 서버가 정보를 기억하고 유저에겐 열쇠만 주면 세션,
- 위조 불가능한 디지털 팔찌를 채워 장부 없이 신원을 확인하면 토큰(JWT)입니다.
과거에는 세션 방식을 가장 많이 사용했지만, 최근처럼 스마트폰 앱과 웹을 동시에 운영하고 수백만 명의 접속자를 감당해야 하는 서비스에서는 서버에 부담을 주지 않는 토큰(JWT) 방식이 업계 표준으로 자리 잡았습니다.
이제 면접관이 세 가지의 차이를 묻는다면, 놀이공원의 장부와 마법의 팔찌를 떠올리며 자신 있게 대답해 보세요! 오늘의 데브 노트가 유익하셨다면 공감과 댓글 부탁드립니다. 지금까지 데브프리였습니다. 감사합니다.
'🚀 데브 노트 (IT 지식 & 팁)' 카테고리의 다른 글
| URI와 URL의 차이점, 아직도 헷갈리시나요? (주민번호와 주소 비유) (0) | 2026.06.18 |
|---|---|
| 프로세스(Process)와 스레드(Thread)의 차이, '공장과 일꾼' 비유로 3분 만에 완벽 정리! (0) | 2026.06.17 |
| 인증(Authentication)과 인가(Authorization)의 차이, '회사 사원증' 하나로 완벽 이해하기! (0) | 2026.06.15 |
| 동기(Sync)와 비동기(Async)의 차이, '카페 진동벨' 하나로 완벽 이해하기! (0) | 2026.06.14 |
| 라이브러리와 프레임워크의 차이점, 딱 '이것' 하나만 기억하세요! (0) | 2026.06.13 |