IT 개발 라이프/Back_End

🍪 쿠키(Cookie)와 세션(Session) 이란?

10Biliion 2024. 12. 6. 13:24

웹 개발에서는 클라이언트와 서버 간의 데이터 저장 및 관리를 위해 **쿠키(Cookie)**와 **세션(Session)**이 자주 사용됩니다. 쿠키와 세션의 정의, 사용 사례, 그리고 두 개념의 차이점을 상세히 설명하겠습니다.


1. 쿠키(Cookie)란?

쿠키는 **클라이언트(사용자 브라우저)**에 저장되는 작은 데이터 조각입니다. 주로 사용자의 세션 정보를 저장하거나 사이트에서 사용자 설정을 유지하는 데 사용됩니다.

쿠키의 특징

  • 위치: 클라이언트(브라우저)에 저장됨
  • 용량 제한: 4KB 이하
  • 수명:
    • 만료 날짜를 설정하면 **영속 쿠키(Persistent Cookie)**가 됩니다.
    • 만료 날짜를 설정하지 않으면 **세션 쿠키(Session Cookie)**로 브라우저를 닫으면 삭제됩니다.
  • 보안:
    • 민감한 데이터는 저장하지 않는 것이 좋습니다.
    • 데이터가 평문으로 저장되므로 HTTPS와 같은 보안 프로토콜과 함께 사용해야 합니다.

쿠키 사용법

1) 쿠키 설정

// JavaScript에서 쿠키 설정
// 쿠키 이름=값; 옵션
document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/";

2) 쿠키 읽기

// 쿠키 가져오기
console.log(document.cookie);

3) 쿠키 삭제

// 쿠키 만료 날짜를 과거로 설정
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/";

2. 세션(Session)이란?

세션은 서버에서 관리되는 데이터 저장 방식으로, 클라이언트와 서버 간의 지속적인 연결 상태를 유지하는 데 사용됩니다. 세션 데이터는 서버 메모리나 데이터베이스에 저장됩니다.

세션의 특징

  • 위치: 서버에 저장됨
  • 용량 제한: 서버 용량에 따라 다름
  • 수명:
    • 기본적으로 브라우저가 닫히면 세션이 종료됩니다.
    • 명시적으로 세션 타임아웃을 설정할 수 있습니다.
  • 보안: 클라이언트에 저장되지 않아 비교적 안전합니다.

세션 사용법

1) 세션 생성

서버 측 언어로 세션을 생성합니다. 예를 들어, Node.js에서는 다음과 같이 세션을 설정합니다:

const session = require('express-session');
app.use(session({
  secret: 'your-secret-key',
  resave: false,
  saveUninitialized: true
}));

// 세션 데이터 설정
req.session.username = 'JohnDoe';

2) 세션 읽기

console.log(req.session.username);

3) 세션 삭제

req.session.destroy((err) => {
  if (err) {
    console.error(err);
  }
});

3. 쿠키와 세션의 차이점                            

구분 쿠키(Cookie) 세션(Session)
저장 위치 클라이언트 브라우저 서버
용량 제한 4KB 이하 서버 용량에 따라 다름
보안 평문 저장(HTTPS로 암호화 가능) 클라이언트에 저장되지 않아 비교적 안전
수명 만료 시간 설정 가능(영속적 또는 일시적) 브라우저 종료 시 기본적으로 삭제(타임아웃 설정 가능)
속도 클라이언트에서 바로 접근 가능해 빠름 서버 요청을 통해야 하므로 상대적으로 느림
주요 사용 목적 사용자 설정, 로그인 유지, 광고 추적 사용자 인증, 민감한 데이터 관리

4. 쿠키와 세션의 사용 사례

쿠키 사용 사례

  1. 로그인 유지:
    • 사용자가 "로그인 상태 유지"를 체크하면, 쿠키에 사용자 정보를 저장합니다.
    document.cookie = "authToken=abc123; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/";
  2. 사용자 설정 저장:
    • 웹사이트 테마, 언어 설정 등을 쿠키에 저장합니다.
  3. 광고 추적:
    • 사용자의 방문 기록을 저장하여 맞춤형 광고를 제공합니다.

세션 사용 사례

  1. 사용자 인증:
    • 사용자가 로그인하면 세션에 사용자 ID를 저장하고, 이를 기반으로 요청을 처리합니다.
    req.session.userId = user.id;
  2. 장바구니:
    • 전자상거래 웹사이트에서 장바구니 정보를 세션에 저장합니다.
  3. 일시적 데이터 관리:
    • 폼 데이터를 일시적으로 저장하여 여러 페이지에 걸쳐 사용할 수 있습니다.

5. 결론

쿠키와 세션은 웹 애플리케이션에서 데이터 관리와 사용자 경험 향상에 필수적인 도구입니다. 쿠키는 클라이언트에 데이터를 저장하여 빠르게 접근할 수 있는 반면, 세션은 서버에서 데이터를 관리하여 보안이 필요한 작업에 적합합니다. 각각의 장단점을 이해하고 적재적소에 사용하는 것이 중요합니다. ✨