쿠키와 세션의 차이에 대해 설명해 주세요.

쿠키와 세션은 HTTP의 무상태(Stateless) 특성을 보완하여 클라이언트의 상태 정보를 유지하기 위한 두 가지 대표적인 메커니즘입니다.

왜 필요한가?

HTTP는 요청-응답이 끝나면 연결 정보를 유지하지 않기 때문에, 로그인 상태나 장바구니 같은 상태 유지가 필요한 경우 쿠키 또는 세션을 사용합니다.

쿠키 (Cookie)

// 서버 → 클라이언트
Set-Cookie: user=hong; Max-Age=3600; HttpOnly; Secure

// 클라이언트 → 서버 (이후 요청)
Cookie: user=hong

세션 (Session)

// Java Servlet 기준
// 세션 생성 및 값 저장
HttpSession session = request.getSession();
session.setAttribute("loginUser", "hong");

// 세션 값 조회
String user = (String) session.getAttribute("loginUser");

// 세션 무효화 (로그아웃)
session.invalidate();

쿠키 vs 세션 비교

항목쿠키세션
저장 위치클라이언트(브라우저)서버
보안상대적으로 취약 (노출·변조 가능)상대적으로 안전 (ID만 전달)
용량약 4KB 제한서버 자원에 따라 유연
속도서버 부담 적음서버 조회 비용 발생
생명주기만료 시간 직접 설정서버 타임아웃 or 브라우저 종료
사용 예시자동 로그인, 광고 추적, 테마 설정로그인 상태 유지, 장바구니

동작 흐름 요약

1. 클라이언트 → 서버 : 최초 요청 (로그인 등)
2. 서버 : 세션 생성 + Session ID 발급
3. 서버 → 클라이언트 : Set-Cookie: JSESSIONID=abc123
4. 클라이언트 → 서버 : 이후 요청마다 Cookie: JSESSIONID=abc123
5. 서버 : Session ID로 저장된 상태 정보 조회

면접 포인트

CSLOG에서 보기