searchgithubemail

세션과 쿠키

세션과 쿠키의 개념과 차이점

2025-05-13

세션과 쿠키의 개념

세션(session)

세션은 서버가 사용자(클라이언트)마다 정보를 유지하기 위해 서버측에서 관리하는 데이터 저장소다. 세션 데이터 자체는 서버 메모리나 별도 저장소(DB, Redis 등)에 저장하고, 클라이언트에게는 세션을 구분할 수 있는 고유 ID(session ID)를 발급한다. 세션 ID는 클라이언트가 서버에 요청할 때마다 함께 전송되며, 서버는 이 ID를 통해 해당 클라이언트의 세션 데이터를 조회한다.


쿠키(cookie)

쿠키는 사용자(클라이언트)의 브라우저에 저장되는 작은 데이터 조각이다. 서버가 클라이언트에게 쿠키를 보내면 클라이언트는 이를 저장하고, 이후 서버에 요청할 때마다 해당 쿠키를 서버에 전달한다. 이를 통해 서버는 사용자 정보를 지속적으로 식별하거나 상태를 유지할 수 있다.


세션과 쿠키의 차이점

구분세션(session)쿠키(cookie)
저장 위치서버 측클라이언트 측
데이터 크기서버 메모리나 저장소에 저장클라이언트의 브라우저에 저장
만료 기간세션 타임아웃 또는 브라우저 종료 시 삭제만료 기간 설정 가능
보안성상대적으로 높음상대적으로 낮음
사용 용도사용자 인증, 장바구니 등 상태 유지사용자 설정, 로그인 정보 등 지속적 저장
서버 리소스사용자가 많아지면 부담이 될 수 있음서버에 부담이 적음
크기 제한없음일반적으로 4KB 이하
HTTP 전송세션 ID를 통해 서버와 클라이언트 간에 전송쿠키를 통해 서버와 클라이언트 간에 전송
보안 설정HTTPS 전송 시 보안 설정 가능HttpOnly, Secure 속성으로 보안 설정 가능
만료 설정서버에서 관리클라이언트에서 관리
사용 예시로그인 상태 유지, 장바구니 정보 저장사용자 설정, 로그인 정보 저장
삭제 방법서버에서 세션 삭제클라이언트에서 쿠키 삭제

세션과 쿠키의 사용 예시

세션 사용 예시

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

app.use(session({
  secret: 'secret-key', // 암호화용 키
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}));

app.post('/login', (req, res) => {
  req.session.user = { id: 'user123', name: 'john' };
});

쿠키 사용 예시

// Cookie 생성 예시
document.cookie = "username=john; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/";

// 서버에서 쿠키 설정 (Express 예시)
res.cookie('username', 'john', { maxAge: 900000, httpOnly: true });

정리

결국, 둘의 핵심적인 차이는 저장 위치(서버 vs 클라이언트)와 지속성, 보안성에 있다.