쿠키 / 세션 / 웹 스토리지

현수·2022년 4월 18일
0

면접준비

목록 보기
3/10

HTTP 프로토콜은 비연결지향(Connectionless)무상태(Stateless)라는 특징이 있다. 즉, 클라이언트의 로그인 정보나 브라우저에서 입력한 값 등이 페이지를 이동할 때 유지되지 않는 것이다. 이러한 한계를 보완하기 위해 사용하는 것이 쿠키, 세션, 웹 스토리지이다.



쿠키(Cookie)

  • 클라이언트의 로컬에 키와 값의 형태로 저장되며, 이름, 값, 만료시간, 경로 정보 등을 포함한다.

  • Response HeaderSet-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있다.

  • 클라이언트가 별도의 설정을 하지 않아도 브라우저가 Request 시에 Request Header에 넣어서 자동으로 서버로 전송한다. (도메인을 설정할 경우 선택적으로 보내는 것도 가능)

  • Expires(날짜와 시간) 혹은 Max-Age(초)를 명시할 경우 Persistent Cookie, 아무것도 명시하지 않을 경우 Session Cookie가 된다.

    • Persistent Cookie(지속 쿠키) : 클라이언트가 종료되어도 일정 기간 유지되는 쿠키.
    • Session Cookie(세션 쿠키) : 클라이언트가 종료되면 삭제되는 휘발성 쿠키.
  • 쿠키의 경우 최대 4KB의 값만 저장할 수 있으며, 지속 쿠키의 경우 로컬환경에 파일로 저장되기 때문에 보안에 취약할 수 있다.



세션(Session)

  • 클라이언트가 서버와 연결을 유지하고 있는 상태.

  • 하지만 이 경우에는 서버에 세션에 대한 정보(클라이언트의 정보)를 저장하고, 클라이언트에게는 클라이언트를 구분할 수 있는 세션ID를 부여하는 일련의 방식 자체를 지칭.

  • 클라이언트가 Request를 보내면 Response에 Set-Cookie를 통해 세션 ID를 발급한다.

  • 클라이언트는 이후 다시 서버에 Request를 보내면 세션 ID를 같이 전달하게 되고, 서버는 해당 세션을 찾아 적절한 Response를 보내준다.

  • 즉, 세션은 서버에 중요한 정보를 저장하기 때문에 쿠키에 비해 비교적 안전하다.

  • 하지만 서버의 리소스를 사용해 정보를 저장하기 때문에 세션을 많이 사용할 경우 서버에 부하가 생기게 될 수 있다. (특히 로그인에 많이 사용하기 때문에 유저 수가 늘어날 경우 유의)


쿠키 vs 세션

  • 쿠키는 브라우저나 로컬에 파일로 저장되어 탈취, 변조의 위험이 있지만, 세션은 서버의 메모리에 저장되어 비교적 안전하다.
  • 쿠키는 헤더 내의 쿠키에 바로 정보가 있기 때문에 속도면에서 유리하지만, 세션의 경우 세션 ID를 사용해 서버 내에서 다시 데이터를 참조해야하므로 속도가 비교적 느릴 수 있다.
  • 세션은 많이 발급할경우 서버에 부하가 생길 수 있으며, 쿠키는 클라이언트에 데이터를 저장하므로 쿠키의 용량 제한에 영향을 받는다.


웹 스토리지(Web Storage)

  • 서버가 아닌, 클라이언트에 데이터를 저장할 수 있도록 지원하는 HTML5의 새로운 기능.

  • 4KB 밖에 저장하지 못하는 쿠키와 다르게 웹 스토리지는 약 5-10MB(데스크탑 기준)까지 저장공간을 이용할 수 있다.

로컬 스토리지(Local Storage)

  • 브라우저에 반영구적으로 데이터를 저장하며, 브라우저를 종료해도 데이터가 유지된다.(만료 기간이 없다.)
  • 브라우저 자체에 반영구적으로 데이터가 유지되지만, 도메인이 다른 경우에는 로컬 스토리지에 접근할 수 없다.
    - ex) www.google.com에서 로컬 스토리지에 저장한 데이터에 www.naver.com에서 접근 할 수 없다.

세션 스토리지(Session Storage)

  • 세션 스토리지는 각 세션마다 데이터가 개별적으로 저장된다. 즉 서로 다른 브라우저나, 브라우저 안의 탭 마다 개별적으로 데이터가 저장된다.
  • 로컬 스토리지와 달리 세션을 종료하면 데이터가 자동으로 제거되며, 도메인이 같더라도 서로 다른 세션의 데이터에는 접근할 수 없다.

쿠키 vs 웹 스토리지

  • 쿠키는 매 요청마다 서버로 전송되지만, 웹 스토리지는 서버 전송을 자동으로 발생시키지 않는다.(네트워크 트래픽 감소)
  • 웹 스토리지는 쿠키와 달리, 단순 문자열이 아닌 객체 정보를 저장할 수 있다.
  • 쿠키는 개수와 용량에 제한이 있지만 웹 스토리지는 5MB이상까지 저장이 가능해 상대적으로 용량제한이 크다.
  • 쿠키는 만료 일자가 지정되어있어 언젠가는 제거되거나 만료일자를 지정하지 않으면 세션쿠키가 되지만, 웹 스토리지는 로컬 스토리지를 사용할 경우 데이터를 영구적으로 저장할 수 있다.



Reference

profile
언젠간 되겠지!

0개의 댓글