쿠키 vs 세션

ding·2024년 3월 27일

쿠키(Cookies)

특징:

  • 웹 사이트 방문 시 사용자의 컴퓨터에 저장되는 작은 텍스트 파일입니다.
  • 사용자의 선호, 로그인 상태, 장바구니 정보 등을 저장할 수 있습니다.

예시 코드:

// 쿠키 설정하기
function setCookie(name, value, days) {
  let expires = "";
  if (days) {
    const date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    expires = "; expires=" + date.toUTCString();
  }
  document.cookie = name + "=" + (value || "") + expires + "; path=/";
}

// 쿠키 가져오기
function getCookie(name) {
  const nameEQ = name + "=";
  const ca = document.cookie.split(';');
  for(let i = 0; i < ca.length; i++) {
    let c = ca[i];
    while (c.charAt(0) == ' ') c = c.substring(1, c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  }
  return null;
}

// 사용 예
setCookie('user', 'John Doe', 7); // 사용자 이름과 유효 기간(7일)을 쿠키로 저장
const user = getCookie('user'); // 쿠키에서 사용자 이름 가져오기

장점:

  • 간단한 정보를 클라이언트 측에서 빠르게 저장하고 접근할 수 있습니다.
  • 서버 부하를 줄일 수 있습니다.

단점:

  • 보안에 취약할 수 있습니다.
  • 사용자의 브라우저에 저장되므로 저장 공간이 제한적입니다.

사용 이유:

  • 사용자 경험을 개선하기 위해, 예를 들어 로그인 상태 유지, 사용자 선호 설정 등을 위해 사용됩니다.

세션(Sessions)

특징:

  • 서버 측에서 사용자 정보를 저장합니다.
  • 쿠키를 이용하여 세션 ID를 클라이언트에 저장하고, 이를 통해 사용자를 식별합니다.

예시 코드:

const express = require('express');
const session = require('express-session');
const app = express();

app.use(session({
  secret: 'yourSecretKey',
  resave: false,
  saveUninitialized: true,
}));

app.get('/', (req, res) => {
  if (req.session.page_views) {
    req.session.page_views++;
    res.send("You visited this page " + req.session.page_views + " times");
  } else {
    req.session.page_views = 1;
    res.send("Welcome to this page for the first time!");
  }
});

app.listen(3000);

장점:

  • 보안이 쿠키보다 강화됩니다.
  • 데이터가 서버에 저장되므로 더 많은 정보를 안전하게 저장할 수 있습니다.

단점:

  • 서버의 메모리를 사용하기 때문에 대규모 트래픽을 처리할 때 서버에 부담을 줄 수 있습니다.

사용 이유:

  • 로그인 세션 관리, 사용자의 상태를 서버 측에서 관리해야 하는 경우 사용됩니다. 예를 들어, 온라인 쇼핑의 장바구니 기능이나 로그인 상태 유지 등에 활용됩니다.

0개의 댓글