웹 스토리지
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
웹 스토리지는 웹 브라우저가 클라이언트 측에 데이터를 저장할 수 있도록 하는 기술로, 쿠키와 유사하지만 더 큰 저장 용량과 향상된 인터페이스를 제공한다. 웹 스토리지는 클라이언트 측 스크립트만 접근 가능하며, 로컬 스토리지와 세션 스토리지로 구분되어 유효 범위와 유효 기간이 다르다. 웹 스토리지는 키-값 쌍을 문자열 형태로 저장하며, 자바스크립트의 Storage API를 통해 사용된다. 브라우저별로 웹 스토리지 데이터를 저장하는 방식이 다르며, Indexed Database API, 웹 SQL 데이터베이스, HTTP 쿠키 등과 같은 기술과 유사한 기능을 수행한다.
더 읽어볼만한 페이지
- HTML5 - 구글 스위피
구글 스위피는 구글에서 개발한 웹 서비스로, SWF 파일을 JSON으로 직렬화한 후 자바스크립트를 통해 SVG로 변환하여 애니메이션을 구현하는 기술이었으나 2016년 7월 1일 서비스가 종료되었다. - HTML5 - WHATWG
WHATWG는 모질라, 애플, 오페라 소프트웨어 등이 주축이 되어 결성된 웹 표준 개발 및 유지 단체로, HTML Living Standard를 비롯한 다양한 웹 표준을 발행하며, 2019년 W3C와 HTML 및 DOM 표준의 유일한 발행자가 되기로 합의하여 웹 표준 개발의 중심 역할을 한다. - 인터넷 프라이버시 - 구글 스트리트 뷰
구글 스트리트 뷰는 구글이 제공하는 파노라마 가상 거리 보기 서비스이며, 2007년 미국에서 처음 출시되어 전 세계 83개국에서 360도 거리 모습을 제공하며, 개인 정보 보호 문제를 위해 얼굴과 번호판을 흐리게 처리한다. - 인터넷 프라이버시 - 잊힐 권리
잊힐 권리는 인터넷 환경에서 개인의 프라이버시 보호를 위해 제기된 개념으로, 유럽 연합에서 법제화가 추진되었으며, 대한민국에서는 인터넷 자기게시물 접근배제요청권 가이드라인 발표 및 디지털 잊힐 권리 시범사업을 시작했다. - W3C 표준 - HTML
HTML은 웹 페이지 제작을 위한 표준 마크업 언어로서, 팀 버너스리가 제안하고 구현한 후 인터넷 발전과 함께 널리 사용되며, SGML에 기반하여 하이퍼텍스트 기능으로 다양한 콘텐츠를 표현하고 연결하며, W3C와 WHATWG에서 표준화를 진행하고 최신 버전은 HTML Living Standard이다. - W3C 표준 - 타임드 텍스트
타임드 텍스트는 영상이나 오디오 콘텐츠에 시간 정보를 담아 표현되는 텍스트로, 자막이나 캡션 등에 활용되며 TTML, WebVTT 등의 표준이 존재한다.
웹 스토리지 | |
---|---|
웹 스토리지 개요 | |
유형 | 클라이언트 측 데이터 저장소 |
설명 | 웹 브라우저에서 클라이언트 측 데이터를 저장하는 메커니즘 |
관련 기술 | 쿠키 로컬 공유 객체 인덱스드 DB WebSQL (더 이상 사용되지 않음) |
상세 내용 | |
주요 기능 | 키-값 쌍으로 데이터 저장 문자열 기반 데이터 |
스토리지 유형 | 로컬 스토리지 (영구적) 세션 스토리지 (세션 기반) |
접근 범위 | 동일 출처 정책에 따름 |
보안 고려 사항 | 교차 사이트 스크립팅 (XSS) 공격에 취약 민감한 정보 저장 시 암호화 필요 |
기술 표준 및 명세 | |
표준 기관 | W3C WHATWG |
명세 | HTML Standard § 12 Web storage |
활용 예시 | |
사용 사례 | 사용자 설정 저장 오프라인 애플리케이션 지원 임시 데이터 저장 |
기타 | |
참고 사항 | 쿠키와 유사하지만 더 많은 저장 용량 제공 |
2. 특징
웹 스토리지는 쿠키와 비교하여 다음과 같은 주요 특징을 갖는다.
- '''목적:''' 쿠키는 서버와 클라이언트 간 통신을 주 목적으로 하지만, 웹 스토리지는 클라이언트 측 스크립팅에 의해서만 접근 가능하다.
- '''저장 용량:''' 쿠키는 최대 4KB까지 저장 가능하지만, 웹 스토리지는 파이어폭스, 구글 크롬, 인터넷 익스플로러 등 주요 브라우저에서 5MB에서 10MB까지 더 큰 용량을 제공한다.
- '''로컬 스토리지와 세션 스토리지:''' 웹 스토리지는 데이터의 유효 범위와 기간이 다른 로컬 스토리지와 세션 스토리지를 제공한다. 로컬 스토리지는 브라우저를 닫아도 데이터가 유지되는 반면, 세션 스토리지는 브라우저 창이나 탭이 닫히면 데이터가 삭제된다.
- '''인터페이스 및 데이터 모델:''' 웹 스토리지는 키와 값 모두 문자열인 연관 배열데이터 모델을 사용하므로 쿠키보다 더 나은 프로그래밍 인터페이스를 제공한다.[28]
2. 1. 목적
쿠키는 서버와의 통신을 목적으로 하므로 모든 요청에 자동으로 추가되어 서버와 클라이언트 측 모두에서 접근 가능하다. 웹 스토리지는 클라이언트 측 스크립팅만 접근이 가능하다. 웹 스토리지의 데이터는 HTTP 요청마다 서버로 자동 전송되지 않으며, 웹 서버가 웹 스토리지에 직접 쓸 수도 없다.[24] 하지만 클라이언트 측에서 이러한 효과를 실현하는 스크립트를 명시적으로 작성하는 것이 가능하며, 클라이언트 측에서는 서버와 원하는 대로 통신할 수 있는 세밀한 제어가 가능하다.2. 2. 저장 용량
웹 스토리지는 쿠키의 4킬로바이트보다 훨씬 더 큰 저장 용량을 제공한다.브라우저 | 저장 용량 |
---|---|
오페라 10.50+ | 5 MB[4] |
사파리 8 | 5 MB[5] |
파이어폭스 34 | 10 MB[5] (이전에는 2007년에 동일 출처당 5 MB[6]) |
구글 크롬 | 출처당 10 MB (이전에는 출처당 5 MB)[7] |
인터넷 익스플로러 | 저장 영역당 10 MB[8] |
2. 3. 로컬 스토리지와 세션 스토리지
웹 스토리지는 범위와 수명이 다른 두 가지 저장 영역, 즉 로컬 스토리지와 세션 스토리지를 제공한다. 로컬 스토리지에 저장된 데이터는 동일 출처 정책에 정의된 대로 프로토콜, 호스트 이름 및 포트 번호의 조합인 출처별로 구분된다.[9] 이 데이터는 이전에 데이터를 저장한 동일 출처의 페이지에서 로드된 모든 스크립트에서 사용할 수 있으며 브라우저가 닫힌 후에도 유지된다.[9] 세션 스토리지는 출처별 및 인스턴스별(창 또는 탭별)이며 인스턴스의 수명으로 제한된다.[9] 세션 스토리지는 동일한 웹 앱의 별도 인스턴스가 서로 간섭하지 않고 서로 다른 창에서 실행될 수 있도록 하기 위한 것이며, 이는 쿠키에서 잘 지원되지 않는 사용 사례이다.[9]2. 4. 인터페이스 및 데이터 모델
웹 스토리지는 키와 값 모두 문자열인 연관 배열 데이터 모델을 사용하므로 쿠키보다 더 나은 프로그래밍 인터페이스를 제공한다.[28]웹 스토리지는 다음과 같은 특징을 가진다.
- 목적: 쿠키는 서버와의 통신을 주 목적으로 하여 모든 요청에 자동으로 추가되고 서버와 클라이언트 측 모두에서 접근 가능하다. 반면 웹 스토리지는 클라이언트 사이드 스크립팅만 접근이 가능하다. 웹 스토리지의 데이터는 HTTP 요청마다 서버로 자동 전송되지 않으며, 웹 서버가 웹 스토리지에 직접 쓸 수도 없다. 하지만 클라이언트 측에서 이러한 효과를 실현하는 스크립트를 명시적으로 작성하는 것이 가능하며, 클라이언트 측에서는 서버와 원하는 대로 통신할 수 있는 세밀한 제어가 가능하다.
- 저장 용량: 쿠키는 4KB로 제한되지만, 웹 스토리지는 훨씬 더 큰 용량을 제공한다.
- 모질라 파이어폭스: 오리진당 5MB[24]
- 구글 크롬: 오리진당 10MB[25]
- Internet Explorer: 스토리지 영역당 10MB[26]
- 로컬 스토리지와 세션 스토리지: 웹 스토리지는 로컬 스토리지와 세션 스토리지라는 두 가지 다른 스토리지 영역을 제공하며, 각각 유효 범위(스코프)와 유효 기간이 다르다.
- 로컬 스토리지: 동일 출처 정책에 따라 동일한 프로토콜, 호스트 이름, 포트 번호 조합을 가지는 페이지에서 로드되는 모든 스크립트에서 데이터를 사용할 수 있으며, 브라우저가 닫힌 후에도 데이터가 유지된다. 따라서 웹 스토리지는 의 섹션 8.5 및 8.6에 설명된 쿠키의 약한 무결성 및 약한 기밀성과 같은 문제가 없다.
- 세션 스토리지: 오리진별, 인스턴스별(창별 또는 탭별) 유효 범위를 가지며, 인스턴스의 유효 기간으로 제한된다. 세션 스토리지는 동일한 웹 애플리케이션의 다른 인스턴스가 서로 간섭하지 않고 다른 창에서 실행될 수 있도록 설계되었으며, 이는 쿠키에서 충분히 지원되지 않는 사용 방식이다.[27]
3. 사용법
웹 스토리지를 지원하는 브라우저는 window 레벨에서 `sessionStorage`와 `localStorage`라는 전역 객체를 선언한다. 다음 JavaScript 코드는 이러한 브라우저에서 웹 스토리지 동작을 트리거하는 데 사용할 수 있다.
```javascript
// 세션 기간 동안 브라우저에 값 저장
sessionStorage.setItem('key', 'value');
// 값 검색 (브라우저를 닫았다가 다시 열면 삭제됨)
alert(sessionStorage.getItem('key'));
// 세션 기간을 넘어 브라우저에 값 저장
localStorage.setItem('key', 'value');
// 값 검색 (브라우저를 닫았다가 다시 열어도 유지됨)
alert(localStorage.getItem('key'));
```
Storage API를 통해 문자열만 저장할 수 있다.[10] 다른 데이터 유형을 저장하려고 하면 대부분의 브라우저에서 자동으로 문자열로 변환된다. 그러나 JSON으로 변환하면 JavaScript 객체를 효과적으로 저장할 수 있다.
```javascript
// 문자열 대신 객체 저장
localStorage.setItem('key', {name: 'value'});
alert(typeof localStorage.getItem('key')); // string
// 문자열 대신 정수 저장
localStorage.setItem('key', 1);
alert(typeof localStorage.getItem('key')); // string
// JSON을 사용하여 객체 저장
localStorage.setItem('key', JSON.stringify({name: 'value'}));
alert(JSON.parse(localStorage.getItem('key')).name); // value
4. 웹 스토리지 관리
웹 스토리지 객체의 저장은 현재 지원되는 모든 웹 브라우저에서 기본적으로 활성화되어 있으며, 브라우저 벤더마다 사용자가 웹 스토리지를 활성화 또는 비활성화하는 방법, 그리고 웹 스토리지의 "캐시"를 지우는 방법을 제공한다.[16][35] 마찬가지로 웹 스토리지를 제어하는 방법은 서드 파티의 브라우저 확장 기능을 통해서도 가능하다. 브라우저별로 웹 스토리지 객체를 저장하는 방법은 다음과 같다.
브라우저 | 저장 위치 |
---|---|
파이어폭스 | 사용자 프로필 폴더의 `webappsstore.sqlite`라는 SQLite 파일[17][36] |
구글 크롬 | 사용자 프로필의 SQLite 파일 (윈도우에서는 `\AppData\Local\Google\Chrome\User Data\Default\Local Storage`, macOS에서는 `~/Library/Application Support/Google/Chrome/Default/Local Storage`)[37] |
오페라 브라우저 | 오페라 버전에 따라 `\AppData\Roaming\Opera\Opera\sessions\autosave.win` 또는 `\AppData\Local\Opera\Opera\pstorage\` 중 하나[38] |
인터넷 익스플로러 | `\AppData\LocalLow\Microsoft\Internet Explorer\DOMStorage` |
사파리 | 숨겨진 "safari" 폴더 내의 "LocalStorage" 폴더[18] |
5. 명칭
W3C 초안의 제목은 "웹 스토리지"이다. "DOM 스토리지"도 일반적으로 사용되는 명칭이었으나, 현재는 그 사용 빈도가 줄어들고 있다. 예를 들어, Mozilla 및 Microsoft 개발자 사이트의 "DOM 스토리지" 웹 문서는 "웹 스토리지" 문서로 대체되었다.[11][12][13][14]
DOM 스토리지를 구성하는 "DOM"은 문자 그대로 문서 객체 모델을 의미하지 않는다. W3C에 따르면, "DOM이라는 용어는 웹 애플리케이션에서 스크립트에 제공되는 API 집합을 지칭하며, 실제 Document 객체의 존재를 반드시 의미하는 것은 아니다..."[15]
6. 비슷한 기술
- Indexed Database API
- 웹 SQL 데이터베이스
- HTTP 쿠키
- Origin private file system (OPFS)
`localStorage`는 영구적인 키-값 쌍을 저장하는 데 자주 사용되지만, 반복 가능한 인덱싱[19] 및 다른 성능 패턴과 같은 다양한 사용 사례를 가능하게 하기 위해 다른 API가 등장하였다.
참조
[1]
웹사이트
localStorage is not cookies
https://web.archive.[...]
2021-05-14
[2]
웹사이트
Web Storage (Second Edition)
http://www.w3.org/TR[...]
Web Platform Working Group
2021-05-14
[3]
웹사이트
HTML Standard § 12 Web storage
https://html.spec.wh[...]
2021-05-14
[4]
웹사이트
Web Storage: Easier, More Powerful Client-Side Data Storage
https://dev.opera.co[...]
2021-05-14
[5]
웹사이트
Working with quota on mobile browsers: A research report on browser storage - HTML5 Rocks
https://web.archive.[...]
2021-05-04
[6]
문서
John Resig: DOM Storage
http://ejohn.org/blo[...]
ejohn.org
2011-06-12
[7]
웹사이트
Issue 21680002: Up the window.localstorage limit to 10M from 5M. - Code Review
https://chromiumcode[...]
2021-05-14
[8]
웹사이트
Introduction to Web Storage
https://docs.microso[...]
Microsoft
2021-05-14
[9]
문서
W3C: Web Storage draft standard
http://dev.w3.org/ht[...]
Dev.w3.org
2011-06-12
[10]
문서
http://dev.w3.org/ht[...]
W3C
2011
[11]
웹사이트
DOM Storage
https://web.archive.[...]
2011-06-12
[12]
웹사이트
Web Storage API
https://developer.mo[...]
2017-06-28
[13]
웹사이트
Introduction to DOM Storage
https://web.archive.[...]
2011-06-12
[14]
웹사이트
Introduction to Web Storage
https://msdn.microso[...]
2017-06-28
[15]
문서
W3C: Web Storage draft standard
http://dev.w3.org/ht[...]
Dev.w3.org
2011-06-12
[16]
문서
How to enable, disable, or clear your browser's "Web Storage" cache
https://mid.as/kb/00[...]
mid.as
2022-10-06
[17]
문서
Webappsstore.sqlite
https://kb.mozillazi[...]
kb.mozillazine.org
[18]
문서
Where is Safari web data stored?
https://discussions.[...]
discussions.apple.com
2022-10-20
[19]
웹사이트
localStorage in Modern Applications
https://rxdb.info/ar[...]
2023-08-14
[20]
문서
Opera Web Storage
http://dev.opera.com[...]
Opera
2011
[21]
문서
AndyHume.net
http://blog.andyhume[...]
AndyHume.net
2011
[22]
문서
Web Storage
https://www.w3.org/T[...]
W3.org
2011-06-12
[23]
문서
HTML Living Standard 11 Web storage
https://html.spec.wh[...]
[24]
문서
John Resig: DOM Storage
http://ejohn.org/blo[...]
ejohn.org
2011-06-12
[25]
웹사이트
Issue 21680002: Up the window.localstorage limit to 10M from 5M. - Code Review
https://chromiumcode[...]
2020-01-13
[26]
문서
Introduction to Web Storage
http://msdn.microsof[...]
Microsoft Developer Network, msdn.microsoft.com
2014-08-05
[27]
문서
W3C: HTML Living Standard
https://html.spec.wh[...]
W3C
2020-01-13
[28]
문서
W3C: Indexed Database API
https://www.w3.org/T[...]
W3C
2012-02-12
[29]
문서
http://dev.w3.org/ht[...]
W3C
2011
[30]
웹사이트
DOM Storage
https://web.archive.[...]
2011-06-12
[31]
웹사이트
Web Storage API
https://developer.mo[...]
2017-06-28
[32]
웹사이트
Introduction to DOM Storage
https://web.archive.[...]
2011-06-12
[33]
웹사이트
Introduction to Web Storage
https://msdn.microso[...]
2017-06-28
[34]
문서
W3C: Web Storage draft standard
http://dev.w3.org/ht[...]
Dev.w3.org
2011-06-12
[35]
웹사이트
How to enable, disable, or clear your browser's "Web Storage" cache - MIDAS Knowledgebase
https://mid.as/kb/ar[...]
2020-01-13
[36]
웹사이트
html5 - Where does Firefox store javascript/HTML localStorage?
https://stackoverflo[...]
2020-01-13
[37]
웹사이트
html - How is HTML5 WebStorage data physically stored?
https://stackoverflo[...]
2019-07-16
[38]
웹사이트
local storage - Where the sessionStorage and localStorage stored?
https://stackoverflo[...]
2020-01-13
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com