패스트캠퍼스 데브캠프 : 남궁성의 백엔드 개발 3기

Spring MVC | 쿠키(cookie)와 세션(session)차이점과 예시

Tech_JINI 2025. 2. 25. 14:40

둘 다 서버와 클라이언트 간의 상태를 유지하는 중요한 기술이지만, 작동 방식사용되는 상황에서 큰 차이가 있습니다.

 

1. 쿠키(Cookie)란?

쿠키의 정의

쿠키는 클라이언트 측(즉, 사용자의 브라우저)에 저장되는 작은 데이터 파일입니다. 웹 서버가 클라이언트에게 특정 정보를 저장하고 다시 요청할 때마다 그 정보를 가져오도록 하는 방식으로 동작합니다. 쿠키는 클라이언트 측에서 데이터를 관리하므로 서버의 부하를 줄일 수 있는 장점이 있습니다.

쿠키의 특징

  • 클라이언트 측에 저장되며, 서버에 전달될 때마다 자동으로 포함됩니다.
  • 사용자의 정보(예: 로그인 정보, 사용자 설정 등)를 저장하여, 브라우저를 종료한 후에도 유지할 수 있습니다.
  • 쿠키의 만료 기간을 설정할 수 있어, 특정 기간 동안 유효한 정보를 저장할 수 있습니다.

쿠키를 사용하는 상황

  • 로그인 상태 유지: 사용자가 로그인하면 아이디나 토큰을 쿠키에 저장하여, 브라우저를 재시작하거나 세션이 만료되더라도 로그인 상태를 유지할 수 있습니다.
  • 사용자 맞춤 설정: 사용자가 설정한 테마나 언어 설정 등을 쿠키에 저장하여, 이후 방문 시에도 동일한 환경을 제공할 수 있습니다.

예시:

아래의 로그인 코드에서는 사용자가 "아이디"를 기억하는 옵션을 선택한 경우, 로그인 후 쿠키에 저장하는 예시가 있습니다.

// 로그인 성공 후 쿠키 설정
if (rememberId) {
    Cookie idCookie = new Cookie("id", id);  // 아이디 쿠키 생성
    idCookie.setMaxAge(60 * 60 * 24 * 7);  // 쿠키의 만료 시간을 7일로 설정
    response.addCookie(idCookie);  // 응답에 쿠키 추가
}

 

이 코드에서 사용자가 "아이디 저장"을 선택하면, 해당 아이디를 쿠키에 저장하고, 7일간 유효하도록 설정합니다.

이렇게 저장된 쿠키는 사용자가 페이지를 다시 방문할 때마다 자동으로 서버에 전송되어, 로그인 상태를 유지하는 데 활용됩니다.


2. 세션(Session)란?

세션의 정의

세션은 서버 측에서 사용자의 상태 정보를 관리하는 방식입니다. 사용자가 웹 애플리케이션에 접속하면 서버는 고유한 세션 ID를 발급하고, 이를 통해 각 사용자별 정보를 서버 메모리 등에 저장합니다. 세션은 브라우저가 종료되거나 세션이 만료될 때까지 유효합니다.

세션의 특징

  • 서버 측에서 저장되며, 클라이언트는 세션 ID만을 가지고 관리합니다.
  • 서버에 상태 정보를 저장하므로, 보안 측면에서 쿠키보다 유리합니다.
  • 만료 시간을 설정할 수 있으며, 세션이 만료되면 해당 정보는 더 이상 유효하지 않습니다.

세션을 사용하는 상황

  • 로그인 상태 관리: 사용자가 로그인하면 세션에 로그인 정보를 저장하고, 다른 페이지로 이동하거나 새로고침을 해도 로그인 상태를 유지할 수 있습니다.
  • 쇼핑카드: 사용자가 쇼핑몰에서 선택한 상품 정보를 세션에 저장하여, 여러 페이지를 이동할 때도 쇼핑카드 상태를 유지할 수 있습니다.

예시:

아래의 로그인 코드에서는 사용자가 로그인할 때, 아이디닉네임세션에 저장하는 부분이 있습니다.

// 세션 객체를 얻어오기
HttpSession session = request.getSession();
// 세션 객체에 id와 nickname 저장
session.setAttribute("id", id);
session.setAttribute("nickname", nickname);

 

이 코드에서는 사용자가 로그인한 후, 아이디(id)와 닉네임(nickname)을 세션에 저장합니다.

이후 사용자가 다른 페이지로 이동하더라도, 세션에 저장된 값에 접근하여 로그인 상태를 확인할 수 있습니다.


3. 쿠키와 세션의 차이점

구분

구분 쿠키(Cookie) 세션(Session)
저장 위치 클라이언트(사용자 브라우저) 측에 저장 서버 측에 저장
유효 기간 쿠키의 만료 시간을 설정 가능 (기본적으로 브라우저 종료 시 삭제) 세션은 서버에서 관리되며, 보통 브라우저 종료 시 또는 세션 만료 시 삭제
용량 용량이 작고 한 도메인에서 여러 개의 쿠키를 저장할 수 있음 서버 측에 저장되므로, 용량이 상대적으로 더 크고 한 세션에 여러 데이터를 저장할 수 있음
보안 클라이언트 측에서 저장되므로 보안에 취약할 수 있음 서버 측에서 저장되므로 보안이 상대적으로 더 안전함
사용 예시 로그인 유지, 사용자 맞춤 설정 로그인 관리, 쇼핑카드, 사용자 상태 관리

4. 어떤 상황에서 쿠키와 세션을 사용해야 할까?

  • 쿠키를 사용할 때:
    • 로그인 유지가 필요하거나, 사용자 맞춤형 설정(예: 테마, 언어 선택 등)을 저장할 때 유용합니다.
    • 쿠키는 브라우저가 종료되거나 세션이 만료되더라도 사용자 정보를 저장할 수 있기 때문에, 사용자의 상태를 일정 기간 동안 유지해야 할 때 적합합니다.
  • 세션을 사용할 때:
    • 보안이 중요한 정보(예: 로그인 상태, 결제 정보 등)를 다룰 때 세션을 사용하는 것이 적합합니다.
    • 사용자가 사이트를 이용하는 동안에만 상태를 유지하고, 브라우저 종료 후에는 상태를 자동으로 초기화하고 싶을 때 세션을 사용합니다.

결론

쿠키는 클라이언트 측에서 정보를 저장하고, 세션은 서버 측에서 정보를 관리하는 방식으로, 보안, 유지 기간, 용도에 따라 각각 적합한 상황에서 사용됩니다.