반응형
💡“로그인했더니 계속 로그인 상태가 유지되네?”
어제 로그인한 사이트에 오늘도 들어갔는데,
로그아웃하지 않았더니 여전히 로그인 상태! 😲
이런 '상태 유지’는 도대체 어떻게 되는 걸까요?
바로 세션과 쿠키, 그리고 최근엔 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
반응형
'개발 공부 > 서버' 카테고리의 다른 글
[서버 기초] Docker란? 서버 환경을 통째로 옮기는 마법 같은 기술 (0) | 2025.04.14 |
---|---|
[서버 기초] CORS란? 프론트에서 서버 요청이 막히는 진짜 이유 (0) | 2025.04.09 |
[서버 기초] 서버와 데이터베이스는 어떻게 연결될까? (0) | 2025.04.07 |
[서버 기초] 서버 로그란? 에러 추적부터 실전 로그 분석까지! (0) | 2025.04.04 |
[서버 기초] CDN이란? 전 세계 어디서든 웹이 빠른 이유! (0) | 2025.04.03 |