- Published on
Web Storage
- Authors
- Name
- Inhwan Cho
LocalStorage, SessionStorage, Cookie 차이점
웹 애플리케이션 개발 시 사용자의 브라우저에 데이터를 저장해야 할 때가 있습니다.
이때 사용할 수 있는 세 가지 방법이 LocalStorage
, SessionStorage
, Cookie
입니다.
모두 클라이언트 상에서 key/value 쌍으로 데이터를 저장하며, 저장된 값은 반드시 문자열이어야 합니다.
또한, 모두 동일 출처 정책(Same-Origin Policy, SOP)을 따르기 때문에 세 기술 모두 다른 도메인에서의 접근은 허용되지 않습니다.
그러나 이들의 생성자, 지속시간, 용량, 서버와의 통신, 취약점 측면에서 차이가 있습니다.
표를 통해 살펴보겠습니다.
cookie | local storage | session storage | |
---|---|---|---|
생성자 | 클라이언트와 서버 양쪽 모두 | 클라이언트만 | 클라이언트만 |
지속시간 | 설정한 만료일까지 | 데이터를 명시적으로 삭제하기 전까지 | 탭이나 윈도우를 닫을 때까지 |
용량 | 5KB | 대부분의 브라우저에서 5MB / 10MB | 대부분의 브라우저에서 5MB |
서버와의 통신 | 가능(매 HTTP 요청 시 쿠키 전송) | 불가능 | 불가능 |
취약점 | XSS와 CSRF 공격에 취약 | XSS 공격에 취약 | XSS 공격에 취약 |
예시를 통한 차이점
예시를 통해 조금 더 구체적으로 살펴보겠습니다.
- Cookie: 로그인 상태 유지 같은 경우
Cookie
를 사용할 수 있습니다.
사용자가 웹사이트에 로그인할 때 서버는 응답과 함께 Set-Cookie
헤더를 보내 사용자의 브라우저에 쿠키를 저장합니다.
이후 사용자가 다른 요청을 할 때마다 브라우저는 자동으로 해당 쿠키를 요청에 포함시켜 서버에 전송합니다.
이를 통해 서버는 사용자가 이미 로그인했음을 인식할 수 있습니다.
- LocalStorage: 사용자가 웹사이트에서 어떤 테마를 선택했을 때, 이 선택을 기억하고 싶다면
LocalStorage
를 사용할 수 있습니다.
사용자가 테마를 선택하면 해당 정보를 LocalStorage
에 저장해 두고, 사용자가 웹사이트를 재방문할 때 저장된 정보를 기반으로 선택된 테마를 활성화합니다.
이 정보는 사용자가 명시적으로 삭제하지 않는 한 브라우저에 계속 저장됩니다.
- SessionStorage: 온라인 시험이나 설문조사 등에서 사용자가 데이터를 입력하다가 페이지를 실수로 새로 고침하거나 닫아버린 경우, 입력했던 데이터를 유지하고 싶을 때
SessionStorage
를 사용할 수 있습니다.
이 경우, 사용자의 데이터는 브라우저의 탭이나 창을 닫을 때까지만 유지됩니다.
이러한 차이점들을 이해하고 적절하게 활용한다면 보다 효율적으로 사용자의 데이터를 저장하고 관리할 수 있습니다.
각각의 방법이 가지는 특성을 잘 이해하고 적절한 상황에 맞게 선택하는 것이 중요합니다.