ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • cookie, local storage, session stoarge 알아보기
    개발 2020. 12. 28. 16:35
    반응형

    서버에서 브라우저에게 통신 과정에서 줄 수 있는 데이터 조각이라고 합니다.
    3가지 용도로 사용되고 있습니다.

    • 세션 관리
      유저 로그인 정보 유지, 장바구니, 게임 기록 등
    • 개인화
      테마, 다크 모드 유지 등
    • 트래킹
      유저가 자주 보는 글, 찾아본 검색 기록 트래킹 등

    예전에는 cookie를 이용하여 browser에 데이터를 저장하고 했습니다.
    하지만, localStorage와 indexedDB가 생긴 이후 cookie에 데이터를 직접 넣는 것은 지양합니다.

    Response header에 Set-Cookie 헤더 이용

    Set-Cooke: cookieKey= cookieValue;와 같이 사용

    • 예시
      Content-type: text/html
      Set-Cookie: yummy_cookie=choco
      Set-Cookie: tasty_cookie=strawberry

    Set-Cookie에 life-cycle 부여하기

    Set-Cookie: key=value; Expires=ExpiredTime;와 같이 사용

    • 예시
      Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;

    Set-Cookie에 Domain과 Path 설정하기

    Domain은 통신을 했을 때, 특정 도메인만 쿠키를 설정해 주고 싶을 때 설정합니다.
    설정 해주게 되면, 서브도메인들도 모두 포함되게 됩니다.
    설정을 하지 않으면 현재 주소의 호스트로 설정되게 됩니다.
    Set-Cookie: key=value; Domain=Domain주소;
    Path은 통신을 했을 때, 특정 path에만 쿠키를 보내기 위해 설정합니다.
    서브 디렉토리들은 모두 포함됩니다. 설정하지 않으면 전역으로 설정됩니다.

    Set-Cookie에 XSS 공격 방지를 위한 secure 설정하기

    httpOnly를 붙여서 코드로 가져올 수 없는 cookie를 설정 할 수 있습니다.
    secure를 붙임으로서 http 환경에서는 cookie가 가지 않게 할 수 있습니다.
    Set-Cookie: key=value Secure; HttpOnly; Secure;

    web storage api

    session storage

    sessionStorage는 페이지의 세션이 유지되는 동안 사용할 수 있습니다. 각 origin별로 별도의 스토리지를 관리합니다. 자바스크립트 코드로 작성 및 수정 그리고 삭제가 가능합니다.

    local storage

    localStorage는 session storage와 비슷하지만 만료되지 않습니다.
    자바스크립트 코드로 작성 및 수정 그리고 삭제가 가능합니다.

    set storage

    localStorage.setItem('key', 'value'); sessionStorage.setItem('key','value');

    delete storage

    localStorage.deleteItem('key') sessionStorage.deleteItem('key');

    get storage

    localStorage.getItem('key'); sessionStorage.getItem('key');

     

    반응형

    '개발' 카테고리의 다른 글

    CSRF  (0) 2021.01.05
    서버 통신 헤더를 이용한 웹 보안  (0) 2021.01.03
    npm install options  (0) 2021.01.02
    변수, 상수, 리터널의 차이점  (0) 2020.12.31
    마이스터고 개발자의 하소연  (0) 2020.12.28

    댓글

Designed by Tistory.