브라우저 저장소 종류 / 쿠키, 세션 차이점

담당
황찬우
완료
완료
유형
Frontend
비고

요약


웹 저장소는 클라이언트에 데이터를 저장할 수 있는 저장소로, 키-값 쌍으로 데이터를 저장하고 조회할 수 있습니다. 로컬 저장소(Local Storage)세션 저장소(Session Storage)로 나뉘며, 로컬 저장소는 브라우저 종료 후에도 데이터가 유지되며, 동일한 도메인 전체에서 공유됩니다. 반면 세션 저장소는 브라우저 탭이나 윈도우의 세션 동안만 데이터를 유지하며, 탭 또는 윈도우 간에는 공유되지 않습니다.
 

웹 저장소/브라우저 저장소(Web Storage === Browser storage)


웹 저장소(Web Storage)

  • 웹 데이터를 클라이언트에 저장할 수 있도록 HTML5부터 새롭게 지원하는 저장소
  • 키-값 쌍으로 데이터를 저장하고, 키를 기반으로 데이터를 조회한다.
  • 쿠키와 달리 필요한 경우에만 꺼내 쓰는 것이므로 자동 전송의 위험성이 없다.
  • 오리진(도메인, 프로토콜, 포트) 단위로 접근이 제한되는 특성 덕분에 CSRF(Cross-Site Request Forgery)공격으로부터 안전하다.
  • 오직 문자열(string) 데이터 타입만 지원한다.
  • 웹 저장소 특징
      1. 서버 전송이 없다 : 저장된 데이터가 클라이언트에 존재할 뿐 서버로 전송이 이루어지지 않기 때문에, 네트워크 트래픽 비용을 줄여준다.
      1. 단순 문자열을 넘어 객체 정보를 저장할 수 있다
      1. 용량의 제한이 없다.
      1. 영구 데이터 저장이 가능하다.
  • 내부적으로는 로컬 저장소(Local Storage)와 세션 저장소(Session Storage)가 분리되어 데이터 지속성에 따라 선택적으로 사용이 가능하다.
 

로컬 저장소(Local Storage)

  • 브라우저를 종료해도 유지되는 데이터로, 명시적으로 지우지 않는 한 영구적으로 저장된다.
  • 오리진(도메인, 프로토콜, 포트) 별로 생성되며, 다른 오리진의 로컬 스토리지에는 접근이 불가능하다.
  • 서로 다른 브라우저 탭이라도 동일한 오리진이라면 동일한 로컬 스토리지를 사용한다.
  • 지속적으로 필요한 정보를 저장하기에 좋다
 

세션 저장소(Session Storage)

  • 세션 쿠키와 달리, 탭/윈도우 단위로 생성된다.
  • window 객체와 동일한 유효 범위 및 생존 기간을 가지며, 탭/윈도우를 닫을 시 데이터가 삭제된다.
  • 동일한 탭/윈도우라도 다른 오리진이라면 또 다른 세션 스토리지가 생성된다.
  • 잠시 동안 필요한 정보를 저장하기에 좋다.
 

로컬 저장소vs 세션 저장소

로컬 저장소
세션 저장소
데이터 유지
브라우저 종료시 보관(영구성)
브라우저 종료시 삭제
데이터 범위
동일한 도에인 전역 공유
브라우저간 공유 안됨
용도
지속적으로 필요한 정보(자동 로그인 등)
일시적으로 필요한 정보(일회성 로그인 등)
 

쿠키와 세션


쿠키(Cookie)

  • 서버와 클라이언트 간의 지속적인 데이터 교환을 위해 클라이언트에 만들어진 저장소
  • 쿠키의 데이터는 키-값으로 구성되어 String 형태로 이루어져 있습니다.
  • SameSite 옵션이 Strict가 아닐 경우, 다른 도메인에서 요청할 때도 자동 전송되는 위험성이 있다(CSRF 취약)
  • 대략 4KB까지의 데이터를 저장할 수 있으며 유효 기간이 존재한다.
  • 쿠키의 목적
      1. 세션관리 : 서버가 알아야될 정보(로그인, 사용자 정보, 접속시간, 활동기록 등)
      1. 개인화 : 사용자에 맞는 페이지/광고 제공
      1. 트래킹 : 사용자 행동 및 패턴 분석
  • 쿠키의 구성 요소
    • 이름 : 각각의 쿠키를 구별하는 데 사용되는 이름
    • 값 : 쿠키의 이름과 관련된 값
    • 유효시간 : 쿠키의 유지시간
    • 도메인 : 쿠키를 전송할 도메인
    • 경로 : 쿠키를 전송할 요청 경로
 

세션(Session)

  • 사용자 정보를 클라이언트에 저장하는 쿠키와 달리 세션은 서버 측에서 관리한다.
  • 서버에서 클라이언트를 구분하기 위해 세션 ID를 부여한다.
  • 접속 시간에 제한을 두어 일정 시간 응답이 없으면 정보가 유지되지 않게 설정 가능하다.
  • 데이터를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 되어 서버에 부담을 줄 수 있다(성능 저하의 요인이 될 수 있습니다)
 

쿠키와 세션의 차이


쿠키
세션
데이터 보존 기간
설정한 만료 날짜나 기간에 따라 일시적 또는 영구적으로 저장
브라우저가 열려 있는 동안만 유지, 닫히면 데이터가 사라집니다.
데이터 저장 위치
클라이언트에 저장
서버에 저장
데이터 용량
최대 4KB
따로 용량의 제한이 없다 (스크립트가 한 번에 저장할 수 있는 최대 메모리는 128MB, 하지만 세션 내에서 원하는 만큼 유지 가능)
데이터 저장 형태
text
object
사용되는 리소스
클라이언트의 메모리 클라이언트에서 관리하기 때문에 서버의 부담을 덜어준다
서버의 자원 사용자가 많을 경우 서버에 부담을 줄 수 있다.
속도
세션보다 빠름(서버처리 X)
쿠키보다 느림(서버처리 O)
보안
좋지 않은 편이다 쿠키는 직접 정보를 관리하기 때문에 중간에 정보를 스니핑 당할 수 있다
쿠키보다 비교적 좋은 편이다 세션은 쿠키를 이용해 세션 ID만 저장하고 서버에서 세션을 처리하기 때문에 비교적 보안성이 좋다.
용도
보안이 중요하지 않은 정보(사용자 선호 설정, 추적 정보 등)
주로 현재 세션 동안 필요한 임시 데이터(접속 상태 등)를 저장
사옹 예시
자동로그인, 쇼핑몰의 장바구니 기능, 오늘 더 이상 보지 않기 기능
로그인 유지하기
 

참고 자료