Web

Web Storage 와 Cookie

2024. 9. 4. 15:03
목차
  1. 웹 스토리지(Web Storage)
  2. 주요 특징
  3. 쿠키(Cookie)
  4. http 헤더를 사용한 쿠키 관리
  5. 쿠키의 종류

웹 스토리지(Web Storage)

브라우저 내에 key-value 형태로 데이터를 저장할 수 있는 저장소로 localStorage 와 sessionStorage 가 존재한다.

주요 특징

  • 네트워크 요청 시 서버로 전송되지 않는다.
  • 최소 2MB 혹은 그 이상의 데이터를 저장할 수 있다.
  • 모든 웹 스토리지 객체 조작은 자바스크립트 내에서 실행된다. 따라서 서버가 http 헤더를 사용하여 스토리지 객체를 조작할 수 없다.
  • 웹 스토리지 객체는 domain, protocol, port 로 정의되는 origin 에 묶여 있으므로 protocol 과 sub-domain이 다르면 데이터에 접근할 수 없다.storage 이벤트web storage 에서 데이처가 갱신되면 storage event 가 실행된다.
  • key - 변경된 데이터의 키( .clear()를 호출했다면 null )
  • oldValue - 이전 값(key 가 추가 되었다면 null)
  • newValue - 새로운 값(key 가 삭제 되었다면 null)
  • url - 갱신이 발생한 문서의 url
  • storageArea - 갱신이 발생한 localStorage, sessionStorage 객체
    storage event 는 event 를 발생시킨 storage 를 제외하고 스토리지에서 접근 가능한 window 객체 전부에서 발생한다.localStorage
  • origin이 동일한 경우( domain, protocol, prot 가 같다면, url 경로는 일치하지 않아도 된다. ) 모든 탭과 창에서 데이터가 공유된다.
  • browser 혹은 os 가 재시작 되어도 데이터가 파기되지 않는다.sessionStoragelocalStorage 와 제공하는 프로퍼티, 메소드는 동일하지만 훨씬 제한적이다.
  • 현재 떠 있는 탭 내에서만 데이터가 유지된다.
  • 페이지를 새로고침 해도 데이터가 유지 되지만, 탭을 닫고 새로 열게 되면 데이터가 사라진다.

쿠키(Cookie)

브라우저에 저장되는 작은 크기의 문자열로 주로 웹서버에 의해 만들어진다. 서버가 http 응답 헤더에 Set-Cookie 에 내용을 넣어 전달하면 브라우저는 이 내용을 저장하는데 이것이 쿠키이다. 저장된 쿠키는 동일한 서버(사이트)에 접속할 때마다 Cookie 요청 헤더에 쿠키의 내용을 함께 전달한다.

쿠키를 사용한 인증 로직

쿠키는 클라이언트 식별과 같은 인증에 주로 사용된다.

  1. 사용자가 로그인 하면 서버는 http 응답 헤더의 Set-Cookie에 담긴 session identifier(세션 식별자) 정보를 사용해 쿠키를 설정한다.
  2. 사용자가 동일 도메인에 접속하면 브라우저는 http Cookie 헤더에 인증 정보가 담긴 고유값(세션 식별자)을 함께 담아 서버에 요청을 보낸다.
  3. 서버는 브라우저가 보낸 요청 헤더의 세션 식별자를 사용하여 사용자를 식별한다.
    document.cookie 프로터피를 사용하면 브라우저에서도 쿠키에 접근할 수 있다.

클라이언트의 JavaScript 를 통해서만 조작할 수 있는 웹 스토리지와 달리
쿠키는 http 헤더를 사용하여 쿠키를 설정하고 관리할 수 있다. (http 헤더를 통해 직접 조작 가능한 유일한 클라이언트 측 스토리지 메커니즘)

http 헤더를 사용한 쿠키 관리

  1. 쿠키 관리
    • 쿠키 설정 Set-Cookie
    • 쿠키 삭제 Set-Cookie, 만료 날짜를 과거로 설정하여 쿠키 제거
  2. CSP (Content Security Policy)
    클라이언트 측 스크립트 실행을 제한, 간접적으로 웹 스토리지 사용에 영향을 줄 수 있다.
  3. Clear-Site-Data
    브라우저에 저장된 사이트 데이터(쿠키, 스토리지 등)를 지울 수 있다.
  4. Permission-Policy
    특정 브라우저 기능을 제한할 수 있다.
  5. X-Frame-Option
    iframe 내에서의 페이지 로드를 제어한다.

쿠키의 종류

  1. 유형 선택
    • maxAge 또는 expires 옵션을 설정하지 않으면 기본적으로 session cookie 가 된다.
    • maxAge 또는 expires 옵션을 설정하면 persistent cookie(영구 쿠키)가 된다.
  2. 보안 옵션
    • secure: true 를 설정하면 secure cookie
    • sameSite 를 설정하면 sameSite cookie
    • httpOnly: true 를 설정하면 httpOnly cookie, 하지만 이 설정은 보안 상의 이유로 서버 측에서 구현해야 한다.
  3. 기타
    • third party cookie : 사용자가 방문 중인 도메인이 아닌 다른 도메인에서 설정한 쿠키
    • super cookie: 영구 쿠키보다 더욱 영구적이며 삭제가 어려운 쿠키
    • zombie cookie: 삭제된 이후 스스로 다시 자동적으로 생성되는 쿠키

Session Cookie

  • 브라우저 세션이 끝날 때(일반적으로 브라우저를 닫을 때) 삭제되는 쿠키
  • 상태 관리를 위해 user session 을 추척할 때 사용된다.

Persistent Cookie

  • 지정된 기간동안 사용자의 기기에 남아 있음
  • 만료 날짜가 존재하면 해당 날짜까지 데이터가 유지된다.
  • 장기적인 tracking, 사용자 선호도를 기억하기 위해 사용된다.

Secure Cookie

  • 보안 https 연결을 통해서만 전송된다.
  • 중간자 공격 방지에 도움이 된다.

HttpOnly Cookie

  • 클라이언트 측 스크립트에 접근할 수 없다.
  • 크로스 사이트 스크립팅(XSS) 공격 방지에 도움이 된다.

SameSite Cookie

  • 크로스 사이트 요청과 함께 쿠키가 전송되는 방식을 제어한다.

Third-party Cookie

  • 주로 추적 및 온라인 광고 목적으로 사용된다.
  • 프라이버스 우려로 인해 최신 브라우저에서는 사용이 점차 제한되고 있다.

Super Cookie

  • 표준 http 쿠키 이외의 브라우저 저장 메커니즘을 사용한다.
  • i.e. flash cookie, html5 저장 메커니즘이 있다.

Zoombie Cookie

  • 여러 저장 메커니즘을 사용한다.

출처

- 모던 JavaScript 튜토리얼

- HTTP 쿠키 | 김정환 블로그

 

'Web' 카테고리의 다른 글

Firebase | Realtime Database 로 mock API 만들기  (0) 2023.06.05
NextJS 프로젝트 배포하기 ( with. Github Acion, 가비아 )  (0) 2023.01.27
WEB | 프론트엔드 개발자로서 알아야할 HTTP 기초  (0) 2022.11.17
Web | CORS 개념정리 및 해결방법 (프론트 단에서 해결하는 방법)  (0) 2022.04.08
WEB | DevTools (Network Panel)  (0) 2022.01.06
  1. 웹 스토리지(Web Storage)
  2. 주요 특징
  3. 쿠키(Cookie)
  4. http 헤더를 사용한 쿠키 관리
  5. 쿠키의 종류
'Web' 카테고리의 다른 글
  • Firebase | Realtime Database 로 mock API 만들기
  • NextJS 프로젝트 배포하기 ( with. Github Acion, 가비아 )
  • WEB | 프론트엔드 개발자로서 알아야할 HTTP 기초
  • Web | CORS 개념정리 및 해결방법 (프론트 단에서 해결하는 방법)
3jun
3jun
3jun3jun 님의 블로그입니다.
3jun
3jun
3jun
전체
오늘
어제
  • 분류 전체보기 (94)
    • 프로젝트 (5)
    • Web (9)
    • JavaScript (19)
    • React (12)
    • 알고리즘 (31)
    • Git (3)
    • AWS (3)
    • TypeScript (3)
    • CS (2)
    • Error (6)
    • 회고 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준 온라인저지
  • JavaScript
  • 프로그래머스 코테
  • state
  • msw
  • msw 에러
  • 백준 코테
  • 백준 알고리즘
  • 프로그래머스 코딩테스트 js
  • this.props.history.push
  • outer environment
  • 백준 js
  • Promise
  • 자바스크립트
  • airbnb style guide
  • 프로그래머스 js
  • 백준js
  • 유효성 로직
  • 프로그래머스 코딩테스트
  • react

최근 댓글

최근 글

hELLO · Designed By 정상우.
3jun
Web Storage 와 Cookie
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.