Cookie, Local Storage, Session Storage

전은평·2023년 4월 16일
2

이번 블로그에선 web storage와 cookie에 대해서 알아보자!

Web Storage란?

HTML5부터 제공하는 기능으로, 해당 도메인과 관련된 특정 데이터를 서버가 아니라 클라이언트 웹브라우저에 저장할 수 있도록 제공하는 기능을 의미한다.

쿠키(cookie)와 비슷한 기능이며, Web Storage는 객체처럼 key와 value 형태로 데이터를 저장하고, 키를 통해 데이터를 찾을 수 있어서 데이터 값을 이용하기에 편리하다.

Web Storage는 영구저장소(LocalStorage)와 임시저장소(SessionStorage)로 나누어지는데, 이들은 데이터의 지속성에 따라 구분할 수 있다.

Web Storage는 쿠키와 마찬가지로 데이터의 보안 측면에서 사이트의 도메인 단위로 접근이 제한됨.

1. LocalStorage

  • 브라우저를 닫았다가 다시 열어도 계속 유지된다. 저장한 데이터를 명시적으로 지우지 않는 이상 영구적으로 보관이 가능하다.
  • 도메인마다 별로도 LocalStorage가 생성된다.
  • 도메인만 같으면 전역으로 공유가 가능하다.
  • Windows 전역 객체의 LocalStorage라는 컬렉션을 통해 저장과 조회가 이루어진다.

2. SessionStorage

  • 브라우저가 열려있는 한 페이지를 Reload 해도 계속 유지된다. 하지만 브라우저를 닫으면 삭제된다.
  • Windows 전역 객체의 SessionStorage라는 컬렉션을 통해 저장과 조회가 이루어진다
  • 데이터의 지속성과 액세스 범위에 특수한 제한이 존재한다. Web Storage의 기본 보안처럼 도메인별로 별도로 생성된다. 같은 사이트의 같은 도메인이라도 브라우저가 다르면 서로 다른 영역이 된다. 브라우저 컨텍스트가 다르기 때문이다.

💡 브라우저 컨텍스트
: Document를 표시하는 환경, 즉, 브라우저가 불러온 웹페이지.

Web Storage의 특징

1. 서버 전송이 없다.

2. 단순 문자열을 넘어 객체 정보를 저장할 수 있다.

3. 용량의 제한이 없다.

4. 영구 데이터 저장이 가능하다.


Cookie란?

쿠키는 웹브라우저와 동일하게 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.

영구 저장할 수 있었던 local storage와 달리 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.

쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조하게 된다.

또한 클라이언트에 300개까지 쿠키 저장 가능하고 하나의 도메인당 20개의 값만 가질 수 있다 (하나의 쿠키값은 4KB까지 저장)

Response HeaderSet-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있다. 이 방법은 나중에 로그인에서 refreshToken을 생성하고 쿠키에 등록하는데 이용된다.

쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시에 Request Header를 넣어서 자동으로 서버에 전송한다. 그렇기에, 브라우저 저장소임에도 불구하고 백엔드와 긴밀히 연결되어 있어 쿠키에 있는 내용을 백엔드에서도 빼내어 볼 수 있다.

! 쿠키에는 추가 옵션 사항 적용가능 !

  • 이름 : 각각의 쿠키를 구별하는 데 사용되는 이름

  • 값 : 쿠키의 이름과 관련된 값

  • 유효시간 : 쿠키의 유지시간

  • httpOnly, secure : 쿠기들을 안전하게 보관할 수 있도록 보안 강화 기능
    httpOnly = > js으로 쿠키 조작 못하고 http 통신으로만 주고 받게 할 수 있음
    secure = > https에서만 주고 받기 가능

  • 도메인 : 쿠키를 전송할 도메인

  • 경로 : 쿠키를 전송할 요청 경로

  1. 클라이언트가 페이지 요청

  2. 서버에서 쿠키를 생성

  3. HTTP 헤더에 쿠키를 포함시켜 응답

  4. 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있다

  5. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보낸다

  6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답한다.


쿠키와 Web storage의 차이

1. 쿠키는 매번 서버로 전송된다.

: 웹사이트에서 쿠키를 설정하면 이후 모든 웹 요청은 쿠키 정보를 포함해 서버로 전송됨. 반면 Web Storage는 저장된 데이터가 클라이언트에 존재할 뿐 서버로 전송되지는 않는다.

2. Web Storage는 단순 문자열을 넘어(스크립트) 객체 정보를 저장할 수 있다.

3. Web Storage는 용량의 제한이 없다.

: 반면 쿠키는 개수와 용량에 제한이 있다.

4. Web Storage는 영구 데이터 저장이 가능하다.

: 쿠키는 만료 일자를 지정하게 되어있어 언젠가 제거된다.

참고자료: 코드캠프 수업자료

profile
`아는 만큼 보인다` 라는 명언을 좋아합니다. 많이 배워서 많은 걸 볼 수 있는 개발자가 되고 싶습니다.

0개의 댓글