본문 바로가기
Daily Dev Q&A 정리 템플릿

26.01.23 쿠키와 세션 중에 어떤것을 사용해야 할까?

by teg0 2026. 1. 23.

1. 쿠키 (Cookie)

"사용자의 브라우저에 저장되는 작은 기록장"

  • 개념: 서버가 클라이언트에게 전달한 데이터를 브라우저가 저장해 두었다가, 이후 요청 시마다 서버에 함께 보내는 데이터 조각이다.
  • 저장 위치: 클라이언트(웹 브라우저)
  • 특징:
    • 이름, 값, 만료 날짜, 경로 정보 등으로 구성된다.
    • 브라우저가 종료되어도 만료 시간이 남아있다면 유지될 수 있다. (Persistent Cookie)
    • 서버에 요청을 보낼 때마다 HTTP 헤더에 담겨 자동으로 전송된다.
  • 단점: 보안에 취약합니다. 누구나 브라우저에서 쿠키 값을 확인할 수 있고 조작도 가능하기 때문이다.

 

2. 세션 (Session)

"서버가 관리하는 사용자의 비밀 장부"

  • 개념: 사용자가 웹 서버에 접속해 있는 동안 유지되는 상태 정보다.
  • 저장 위치: 서버(메모리나 DB)
  • 작동 방식:
    1. 사용자가 로그인하면 서버는 고유한 세션 ID를 발급한다.
    2. 이 세션 ID를 클라이언트에게 쿠키 형태로 전달한다.
    3. 클라이언트는 이후 요청마다 이 세션 ID를 들고 오고, 서버는 장부(세션 저장소)에서 ID를 대조해 사용자를 식별한다.
  • 장점: 실제 중요한 데이터는 서버에 있으므로 쿠키보다 훨씬 안전하다.
  • 단점: 서버 메모리를 사용하므로 접속자가 많아지면 서버 부하가 커질 수 있다.

 

왜 둘 다 쓰나요?

세션이 안전하다면 세션만 쓰면 되지 않을까요? 하지만 모든 정보를 세션에 담으면 서버의 자원이 금방 고갈된다.

  • 쿠키 권장: "오늘 하루 보지 않기" 팝업, 쇼핑몰 비로그인 장바구니, 언어 설정 등 보안이 덜 중요한 정보
  • 세션 권장: 로그인 정보, 결제 관련 개인 정보 등 보안이 중요한 정보

 

면접 답변식 요약

가장 큰 차이점은 상태 정보를 저장하는 위치입니다. 쿠키는 클라이언트 측에 저장되며 요청 시마다 서버로 전송되기 때문에 보안에 취약하지만 서버 자원을 쓰지 않는다는 장점이 있습니다. 반면 세션은 서버 측에서 데이터를 관리하고 클라이언트에게는 식별자인 세션 ID만 부여하므로 보안성이 더 뛰어납니다.

실무에서는 보안이 중요한 로그인 정보는 세션으로, 사용자 편의를 위한 단순 설정 정보는 쿠키를 사용하는 식으로 적절히 혼합하여 사용합니다. 최근에는 서버의 확장성을 위해 세션 대신 JWT(JSON Web Token) 같은 토큰 기반 인증 방식을 사용하기도 합니다.