본문 바로가기
취준/CS 기술면접 준비

쿠키(Cookie)와 세션(Session)

by 윤숩 2025. 1. 5.
728x90
728x90

 

웹 애플리케이션에서 사용자 정보를 저장하고 관리하기 위한 기술입니다. 둘 다 HTTP의 비상태적 특성을 보완하기 위해 사용되며, 주로 사용자 인증, 상태 유지, 사용자 맞춤 경험 제공 등에 활용됩니다. 하지만 쿠키와 세션은 동작 방식, 저장 위치, 보안 측면에서 차이가 있습니다.


쿠키( Cookie )

정의

  • 쿠키는 사용자 브라우저에 저장되는 작은 데이터 조각입니다.
  • 서버에서 생성되어 브라우저에 저장되며, 이후 요청마다 서버로 전송됩니다.

특징

  1. 저장 위치: 사용자의 브라우저(클라이언트 측)에서 저장.
  2. 데이터 크기: 쿠키는 일반적으로 4KB 이하의 데이터만 저장 가능.
  3. 수명:
    • 세션 쿠키: 브라우저를 닫을 때 삭제됨.
    • 영구 쿠키: 만료 날짜를 설정하면 그때까지 유지.
  4. 전송 방식: HTTP 요청 시마다 자동으로 서버에 포함되어 전송.

장점

  1. 상태 유지:
    • 사용자의 상태(예: 로그인 여부)를 유지하는 데 유용.
  2. 광범위한 지원:
    • 대부분의 브라우저에서 기본적으로 지원.
  3. 간단한 사용:
    • 브라우저와 서버 간 정보 교환이 자동화.

단점

  1. 보안 문제:
    • 브라우저에 저장되므로 조작될 위험이 있음.
    • 민감한 데이터는 반드시 암호화해야 함.
  2. 용량 제한:
    • 데이터 크기가 제한적이므로 많은 데이터를 저장하기 어려움.
  3. 추적 가능성:
    • 쿠키를 통해 사용자의 활동이 추적될 수 있음(예: 광고).

세션(Session)

정의

  • 세션은 서버에서 관리되는 사용자 데이터의 임시 저장소입니다.
  • 브라우저와 서버 간의 상태를 유지하는 데 사용됩니다.

특징

  1. 저장 위치: 서버 측에 저장.
  2. 데이터 크기: 서버의 메모리나 데이터베이스를 사용하므로 상대적으로 많은 데이터를 저장 가능.
  3. 수명:
    • 보통 사용자가 브라우저를 닫거나, 서버에서 세션 만료 시간을 설정하면 삭제.
  4. 식별 방식:
    • 세션 ID가 쿠키나 URL에 포함되어 클라이언트-서버 간에 전달됩니다.

장점

  1. 보안성:
    • 민감한 데이터가 서버에 저장되므로 클라이언트 측 조작 가능성이 적음.
  2. 큰 데이터 관리:
    • 서버 자원을 사용하므로 많은 양의 데이터를 관리 가능.
  3. 사용자 상태 관리:
    • 로그인 정보, 장바구니 데이터 등 사용자 상태를 쉽게 유지 가능.

단점

  1. 서버 부담:
    • 다수의 사용자가 접속하면 세션 데이터를 관리하기 위해 서버 리소스가 증가.
  2. 종속성:
    • 클라이언트-서버 간 연결이 끊어지면 세션 정보가 유지되지 않을 수 있음.

쿠키와 세션의 주요 차이점

항목 쿠키 (Cookie) 세션(Session)
저장 위치 클라이언트(브라우저) 서버
보안성 낮음 (조작 및 도난 가능) 높음 (서버에서 관리)
데이터 용량 최대 4KB 제한 서버 용량에 따라 다름
수명 브라우저 종료 또는 만료 날짜 설정 시 삭제 브라우저 종료 또는 세션 만료 시 삭제
전송 여부 HTTP 요청 시마다 자동으로 서버로 전송 세션 ID만 전송
속도 빠름 (클라이언트에서 처리) 느림 (서버에서 처리)

 


쿠키와 세션의 사용 사례

쿠키를 사용하는 경우

  1. 사용자 맞춤 환경:
    • 다크 모드, 언어 설정 등 브라우저에 저장되는 사용자 설정.
  2. 자동 로그인:
    • 로그인 상태를 유지하기 위해 토큰을 쿠키에 저장.
  3. 트래킹:
    • 웹 분석 도구에서 사용자 행동 추적.

세션을 사용하는 경우

  1. 사용자 인증:
    • 로그인 정보와 같은 민감한 데이터를 관리.
  2. 전자상거래:
    • 장바구니와 같은 상태를 유지.
  3. 사용자별 데이터 저장:
    • 개인화된 데이터를 서버에서 관리.

쿠키와 세션을 함께 사용하는 경우

  • 혼합 활용:
    • 쿠키는 세션 ID를 저장하는 용도로 사용.
    • 세션은 사용자 데이터를 서버에서 안전하게 관리.

예:

  1. 사용자가 로그인하면 서버는 세션을 생성하고 세션 ID를 쿠키에 저장.
  2. 이후 요청마다 쿠키에 저장된 세션 ID를 서버로 전송하여 사용자의 인증 상태를 확인.

보안 팁

  1. 쿠키 보안
    • Secure 속성을 사용하여 HTTPS에서만 전송되도록 설정.
    • HttpOnly 속성을 추가하여 JavaScript로 접근하지 못하게 설정.
    • 데이터 암호화 및 서명 활용.
  2. 세션 보안
    • 세션 시간 제한 설정(예: 30분).
    • 세션 탈취 방지를 위해 HTTPS와 CSRF 방어 적용.
    • 서버에서 세션 데이터를 정기적으로 삭제(예: 오래된 세션 정리).

쿠키와 세션은 웹 애플리케이션의 핵심적인 데이터 관리 기술로, 애플리케이션 요구사항에 따라 적절히 선택하거나 조합하여 사용할 수 있습니다. 😊

728x90
728x90

댓글