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

저장소 유형 용량 제한 설정 주체 오리진 스코프 보안·속성 설정 수명 접근 방식 주요 취약점
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 영향 없음