아래 표는 용량 제한, 설정 주체, 오리진 스코프, 보안·속성 설정, 수명, 접근 방식, 그리고 주요 취약점을 한눈에 비교한 것입니다.

저장소 유형 용량 제한 설정 주체 오리진 스코프 보안·속성 설정 수명 접근 방식 주요 취약점
localStorage 도메인(origin)당 5 MiB developer.mozilla.org 클라이언트 JS (window.localStorage) 동일 오리진(프로토콜·호스트·포트 일치) • HttpOnly/Secure 플래그 없음• XSS 방지 기능 없음 영구(브라우저 데이터 삭제 전까지) 동기 JS API XSS에 취약 (악성 스크립트가 직접 접근 가능)CSRF 영향 없음 (자동 전송되지 않음)
sessionStorage 도메인당 5 MiB developer.mozilla.org 클라이언트 JS (window.sessionStorage) 동일 오리진 + 탭/창 분리 • HttpOnly/Secure 플래그 없음• XSS 방지 기능 없음 탭/창 종료 시 자동 소멸 동기 JS API XSS에 취약CSRF 영향 없음
쿠키 (Cookies) 쿠키 하나당 4 KiB (키+값+속성 포함) developer.mozilla.org도메인당 최소 수백 개까지 1) 서버 Set-Cookie 헤더2) 클라이언트 JS (document.cookie) 도메인 & Path 단위 세분화 가능 • Secure: HTTPS 전송 전용• HttpOnly: JS 접근 차단 가능• SameSite (Strict/Lax/None)으로 CSRF 방지• Domain/Path 지정 가능 만료일(Expires/Max-Age) 설정 가능없으면 세션 쿠키 (브라우저 종료 시 소멸) 동기 JS API & HTTP 헤더 CSRF에 취약 (SameSite 미설정 시)XSS 가능 (HttpOnly 미사용 시)
IndexedDB 고정 한도 없음 (사용자 디스크 공간·브라우저 쿼터에 따름) stackoverflow.com 클라이언트 JS (indexedDB.open) 동일 오리진 • HttpOnly/Secure 플래그 없음• 할당량 초과 시 QuotaExceededError 영구(브라우저 데이터 삭제 전까지) 비동기 JS API (Promise/Event) XSS에 취약 (악성 스크립트가 직접 접근 가능)CSRF 영향 없음
Cache Storage 고정 한도 없음 (IndexedDB와 동일한 쿼터 시스템) developer.mozilla.org 서비스 워커 JS (caches.open) 동일 오리진 • Secure Context(HTTPS) 필수 developer.mozilla.org• 브라우저가 자동 eviction 관리 영구(명시적 삭제 전까지) 비동기 JS API (Promise) XSS 간접 취약 (악성 SW 배포 시 캐시된 리소스 변조 가능)CSRF 영향 없음