Web Storage
Web Storage는 브라우저가 웹 애플리케이션에 제공하는 문자열 기반 키·값 저장 API다. localStorage와 sessionStorage라는 두 저장소를 사용하며, HTTP 쿠키와 달리 저장된 값을 네트워크 요청에 자동으로 전송하지 않는다. 사용자 인터페이스 설정과 짧은 상태...
| 분류 | 브라우저 저장소 API |
|---|---|
| 주요 용도 | 출처 단위 키·값 저장 |
| 관련 기술 | World Wide Web, 웹 브라우저, HTTP, JavaScript |
| 주요 명세 | WHATWG HTML Web Storage |
Web Storage는 브라우저가 웹 애플리케이션에 제공하는 문자열 기반 키·값 저장 API다. localStorage와 sessionStorage라는 두 저장소를 사용하며, HTTP 쿠키와 달리 저장된 값을 네트워크 요청에 자동으로 전송하지 않는다. 사용자 인터페이스 설정과 짧은 상태 정보, 창별 작업 흐름과 같은 비교적 단순한 데이터를 클라이언트에서 보존하는 데 적합하다.
localStorage는 같은 출처에 속한 문서 사이에서 공유할 수 있는 저장 공간으로 브라우저의 데이터 삭제 정책 등에 따라 유지된다. sessionStorage는 출처뿐 아니라 최상위 브라우징 컨텍스트의 세션과도 관계가 있어 창이나 탭 단위의 상태 보존에 활용된다. 저장 공간의 범위와 데이터 접근 권한에는 출처 격리 정책이 적용된다.
Web Storage는 getItem, setItem, removeItem, clear 같은 메서드를 제공하며 저장 값은 문자열로 처리된다. 객체나 배열을 보존하려면 JSON 직렬화 등 별도의 표현 방식이 필요하다. 저장소 변경이 관련된 다른 문서에 전달되는 storage 이벤트도 지원되지만 변경을 수행한 같은 문서에서의 이벤트 처리와는 구분된다.
일반적인 Web Storage API는 동기적으로 동작하므로 매우 큰 데이터를 자주 읽고 쓰는 용도로 사용할 때에는 사용자 인터페이스의 응답성이 영향을 받을 수 있다. 브라우저별 저장 용량과 정책은 다르고, 사용자가 저장을 차단하거나 데이터를 삭제하면 쓰기 과정이 실패할 수 있다. 많은 구조화 데이터와 색인이 필요하다면 IndexedDB가 더 적합한 경우가 많다.
Web Storage의 데이터는 자바스크립트에서 접근할 수 있으므로 페이지에서 실행되는 악성 스크립트의 영향을 받을 수 있다. 따라서 민감한 인증 비밀을 장기 보관하는 수단으로 단순하게 선택해서는 안 된다. 저장소가 사용자의 장치에 있다고 하더라도 개인정보 처리와 데이터 보존 정책의 대상이 될 수 있다.[1]