반응형

 

먼저 쿠키 / 세션 / 로컬 스토리지왜 쓰는 걸까?

간단히 말하자면 웹 브라우저(클라이언트)와 서버가 데이터를 주고 받기 위해서는 HTTP 프로토콜을 사용한다. 

HTTP는 무상태성의 특징을 갖는데, 이는 서버가 클라이언트의 이전 요청을 기억하지 않는다는 특징이다.

 

예를 들어 로그인 정보같은 것을 기억하지 못하기 때문에 페이지 이동 시에도 매번 로그인을 해야한다.

이러한 문제를 해결하기 위해 쿠키 / 세션 / 로컬 스토리지를 사용한다.

 

[HTTP에 대해 더 알고 싶다면 아래 글을 참고!]⤵️

https://y-flm.tistory.com/81

 

[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 보안상 브라우저 저장소는 피해야 함
반응형

+ Recent posts