본문 바로가기
개발 공부/서버

[서버 기초] 세션 vs 쿠키? 로그인 상태는 어떻게 유지될까?

by 악마의 개발자 2025. 4. 8.
반응형


💡“로그인했더니 계속 로그인 상태가 유지되네?”

어제 로그인한 사이트에 오늘도 들어갔는데,
로그아웃하지 않았더니 여전히 로그인 상태! 😲

이런 '상태 유지’는 도대체 어떻게 되는 걸까요?
바로 세션과 쿠키, 그리고 최근엔 JWT라는 기술 덕분이에요.

오늘은 이 원리를 아주 쉽게 알려드릴게요!


🔑 쿠키(Cookie)란?

쿠키

사용자의 브라우저에 저장되는 작은 데이터 조각이에요.

서버가 클라이언트에게
“이 정보 좀 기억해줘~” 하면서 쿠키를 저장하게 합니다.

 

📦 예시:

Set-Cookie: session_id=abcd1234; Path=/; HttpOnly;
 

✅ 사용처:

  • 로그인 상태 기억
  • 장바구니 정보 저장
  • 사용자 설정(다크모드 등) 유지

❗ 쿠키는 브라우저에 저장되며,
모든 요청마다 서버로 자동 전송돼요!


🔐 세션(Session)이란?

세션

서버가 사용자와의 상태를 기억하기 위해 저장하는 데이터 공간이에요.

사용자가 로그인하면,
서버는 사용자 정보를 메모리에 저장하고,
그걸 구분하기 위한 세션 ID를 발급해요.

이 세션 ID는 쿠키로 사용자 브라우저에 저장되죠.

흐름 요약:

[로그인 요청]
→ 서버: 세션 생성 + 세션ID 발급
→ 클라이언트: 세션ID 쿠키로 저장
→ 이후 요청마다: 세션ID 쿠키 자동 포함
→ 서버가 세션ID 확인 후 로그인 유지

🆚 세션 vs 쿠키

항목 쿠키 세션
저장 위치 클라이언트(브라우저) 서버(메모리/DB 등)
보안 상대적으로 약함 더 안전함
용량 제한 약 4KB 제한 없음 (서버가 감당)
유지 방식 직접 데이터 저장 세션ID만 저장 (실제 데이터는 서버에 있음)
만료 시점 설정 가능 서버 설정 또는 브라우저 종료 시

🧾 실전 예시

  • 쿠키만 사용하는 경우:
    user_id=123을 직접 쿠키에 저장 (보안에 취약)
  • 세션 사용하는 경우:
    서버에 user_id=123 저장
    → 브라우저에는 session_id=abcd1234만 저장

🔐 JWT(JSON Web Token)도 알아두자!

JWT는 최근 많이 쓰이는 토큰 기반 인증 방식이에요.

세션 없이, 토큰 안에 사용자 정보를 담아 클라이언트에 저장

📦 특징:

  • 서버가 상태를 기억하지 않아도 됨 (Stateless)
  • 확장성과 성능에 유리
  • 하지만 토큰 탈취 시 위험 커짐 (만료, 암호화 중요!)

💬 언제 뭘 써야 할까?

상황 추천 방식
간단한 로그인 유지 세션 + 쿠키
대규모 서비스 / 모바일 앱 JWT 기반 인증
민감 정보 포함 세션 (서버 보관) 선호

🧠 정리 한마디!

  • 쿠키: 브라우저에 저장되는 작은 데이터
  • 세션: 서버가 사용자 정보를 기억하고, 쿠키는 세션ID만 보관
  • JWT: 서버가 상태를 기억하지 않아도 되는 인증 방식

→ 목적과 서비스 규모에 따라
세션, 쿠키, JWT 중 적절한 방식을 선택하면 됩니다! 😊


📌 다음 예고: “CORS란? 서버에서 요청이 막히는 이유는?”

  • 프론트엔드에서 서버 요청이 막히는 이유?
  • CORS 에러 메시지 완전 해부
  • 허용 설정은 어디서 어떻게?

 

 

[서버 기초] CORS란? 프론트에서 서버 요청이 막히는 진짜 이유

💡 “서버에 요청 보냈는데… 에러가 났어요!”프론트엔드에서 열심히 fetch로 API를 요청했어요.그런데 콘솔에 이런 메시지가 뜹니다.❌ “Access to fetch at 'http://api.example.com' from origin 'http://localho

it-afternoon.tistory.com

 

반응형