
먼저 쿠키 / 세션 / 로컬 스토리지는 왜 쓰는 걸까?
간단히 말하자면 웹 브라우저(클라이언트)와 서버가 데이터를 주고 받기 위해서는 HTTP 프로토콜을 사용한다.
HTTP는 무상태성의 특징을 갖는데, 이는 서버가 클라이언트의 이전 요청을 기억하지 않는다는 특징이다.
예를 들어 로그인 정보같은 것을 기억하지 못하기 때문에 페이지 이동 시에도 매번 로그인을 해야한다.
이러한 문제를 해결하기 위해 쿠키 / 세션 / 로컬 스토리지를 사용한다.
[HTTP에 대해 더 알고 싶다면 아래 글을 참고!]⤵️
[CS] HTTP(Hyper Text Transfer Protocol)란?
HTTP(Hyper Text Transfer Protocol)란? 웹에서 정보를 주고 받기 위한 프로토콜을 말하는데, 한마디로 웹 브라우저(클라이언트)와 서버가 데이터를 주고 받는 통신 방법이다.⚠️ 여기서 잠깐, 프로토
y-flm.tistory.com
쿠키(Cookie)란?
작은 데이터 조각을 브라우저에 저장하는 방식으로, 클라이언트에 저장되지만 매 요청마다 서버로 자동 전송된다.
[쿠키의 특징]
항목 | 설명 |
저장 위치 | 브라우저 (텍스트 형태) |
서버 전송 여부 | 항상 자동 전송됨 (요청 헤더에 포함) |
만료 기간 | 직접 설정 가능 (expires, max-age) |
크기 제한 | 약 4KB 이하 |
보안 | HttpOnly, Secure, SamSite 옵션으로 보안 강화 가능 |
사용 예시 | 로그인 유지, 장바구니, 사용자 식별용 토큰 등 |
* JS에서 쿠키를 확인하려면 document.cookie를 이용해 확인할 수 있다.
세션(Session)이란?
서버에 저장되는 유저 상태 정보로, 브라우저에는 세션 ID만 저장되며 실제 데이터는 서버 메모리나 DB에 저장된다.
[세션의 특징]
항목 | 설명 |
저장 위치 | 서버 측 저장 |
클라이언트 역할 | 세션 ID만 저장 |
서버 전송 여부 | 요청 시 쿠키에 담긴 세션 ID가 전송됨 |
만료 기간 | 브라우저 종료 시 or 서버 설정에 따라 자동 만료 |
보안 | 서버 관리 가능 -> 상대적으로 보안성 높음 |
사용 예시 | 로그인 상태 유지, 장바구니 정보, 사용자 인증 등 |
* JS에서 세션을 확인하려면 window.sessionStorage를 이용해 확인할 수 있다.
로컬 스토리지(Local Storage)란?
브라우저에 key-value 형태로 데이터 저장하는 HTML5 기술로, 서버로 자동 전송되지 않는다.
[로컬스토리지 특징]
항목 | 설명 |
저장 위치 | 브라우저 (영구 저장) |
서버 전송 여부 | 자동 전송되지 않음 |
만료 시점 | 지우기 전까지 영구 저장 |
크기 제한 | 약 5~10MB |
보안 | JS에서 접근 가능 (XSS 취약) |
사용 예시 | 테마 설정, 임시 저장, 사용자 설정 등 |
* JS에서 로컬 스토리지를 확인하려면 window.localStorage를 이용해 확인할 수 있다.
* 로컬 스토리지에 값을 설정하거나 값을 가져오려면 아래와 같은 코드로 수행할 수 있다.
// 'theme'이라는 key에 'dark'라는 value를 저장
localStorage.setItem('theme', 'dark');
// 'theme'이라는 키에 저장된 값을 theme 변수에 저장
const theme = localStorage.getItem('theme'); // 'dark'
차이점 요약 🔍
구분 | 쿠키(Cookie) | 세션(Session) | 로컬 스토리지(Local Storage) |
저장 위치 | 브라우저 | 서버 | 브라우저 |
자동 서버 전송 | ⭕️ (요청마다) | ⭕️ (세션ID가 쿠키로 전송) | ❌ 전송되지 않음 |
용량 제한 | 약 4KB | 서버가 관리 | 5~10MB 정도 |
만료 시점 | 직접 설정 | 브라우저 종료 or 설정 | 직접 지우기 전까지 |
보안 | 중간 (옵션으로 보완 가능) | 높음 (서버 관리) | 낮음 (XSS에 노출 가능) |
사용 목적 | 인증, 추적, 상태 유지 | 로그인, 사용자 상태 관리 | 캐시, 개인 설정 등 클라이언트 전용 |
차이점을 보고 대략적으로 언제 사용하면 좋을지 아래와 같이 정리해보았다.
목적 | 추천 방식 | 이유 |
로그인 유지 | 세션 or 쿠키 | 세션은 서버에서 관리 → 보안에 좋음 쿠키는 토큰 기반 로그인에 사용됨 (JWT 등) |
사용자 설정 저장 (다크모드 등) | 로컬스토리지 | 서버에 전송할 필요 없음 |
인증 토큰 저장 | 쿠키 or 로컬스토리지 | 쿠키는 자동 전송, 로컬스토리지는 수동 전송 |
민감 정보 저장 | 저장 X | 보안상 브라우저 저장소는 피해야 함 |
'공부 > CS' 카테고리의 다른 글
[CS] MPA vs SPA (프론트엔드 구조 알아보기 🔍) (0) | 2025.04.18 |
---|---|
[CS] CSR vs SSR vs SSG (웹 페이지 렌더링 방식 정리 🔍) (0) | 2025.04.16 |
[CS] HTTP(Hyper Text Transfer Protocol)란? (0) | 2025.04.14 |
[CS] 프로토콜(Protocol)이란? (Feat. OSI 7계층) (0) | 2025.04.14 |
[CS] 브라우저의 렌더링 과정 (0) | 2025.04.14 |