아래 표는 용량 제한, 설정 주체, 오리진 스코프, 보안·속성 설정, 수명, 접근 방식, 그리고 주요 취약점을 한눈에 비교한 것입니다.
저장소 유형 | 용량 제한 | 설정 주체 | 오리진 스코프 | 보안·속성 설정 | 수명 | 접근 방식 | 주요 취약점 |
---|---|---|---|---|---|---|---|
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 영향 없음 |