
쿠키(Cookies) vs 세션(Sessions)
웹사이트에 로그인한 뒤 다른 페이지로 이동해도
로그인이 계속 유지됩니다. 쇼핑몰에서는 장바구니 상품이 남아 있고,
사이트는 내가 선택했던 언어나 화면 설정도 기억합니다.
이런 사용자 상태를 유지하는 대표적인 기술이 쿠키와 세션입니다.
쉽게 말하면,
쿠키 = 브라우저가 기억하는 데이터
세션 = 서버가 기억하는 데이터
쿠키는 사용자의 브라우저에 작은 데이터를 저장합니다. 로그인 유지, 언어·테마 같은 환경설정, 방문 분석 등에 활용됩니다. 브라우저가 서버에 요청을 보낼 때 해당 도메인의 쿠키도 함께 전송될 수 있습니다.
반면 세션은 중요한 사용자 상태를 서버 측에 저장합니다. 브라우저에는 일반적으로 실제 로그인 정보 전체가 아니라 세션을 식별하기 위한 Session ID만 저장하고, 서버가 이 ID를 이용해 해당 사용자의 세션 데이터를 찾아냅니다.
예를 들어 PHP에서는 다음과 같은 구조가 흔합니다.
브라우저 → PHPSESSID → 서버 → 해당 사용자의 Session Data 조회
따라서 로그인 인증처럼 중요한 기능에서는 “쿠키냐 세션이냐”를 하나만 선택하는 것이 아니라, 쿠키에 세션 ID를 저장하고 실제 인증 상태는 서버 세션에서 관리하는 방식을 많이 사용합니다.
여기서 가장 중요한 것은 보안입니다
“세션을 사용하면 무조건 안전하다”는 의미는 아닙니다. 공격자가 Session ID를 탈취하면 세션 하이재킹(Session Hijacking)으로 이어질 수 있기 때문입니다.
실무에서는 HTTPS + Secure + HttpOnly + SameSite + 적절한 세션 만료 + 로그인 후 Session ID 재발급 등을 함께 적용해야 합니다.
또 하나 중요한 점은 쿠키에 비밀번호나 개인정보 같은 민감정보를 직접 저장하지 않는 것입니다.
결국 핵심은 아주 간단합니다.
쿠키는 편의성과 상태 기억에 강하고, 세션은 서버 중심의 인증·상태 관리에 적합합니다.
실제 안전한 웹 애플리케이션은 두 기술을 경쟁 관계가 아니라 서로 보완하는 구조로 사용합니다.
한 줄로 기억하세요.
Cookie는 “브라우저의 기억”, Session은 “서버의 기억”입니다.
— 이춘곤(Mark) · ISC.studio · ISC출판 도서 안내
이 글은 저자의 Facebook에 처음 게시한 글입니다. Facebook 원문 보기
💬 댓글 (0)