Steady Dev - TIL

쿠키(Cookie), 세션(Session), local Storage

쿠키와 세션, 로컬 스토리지를 사용하는 이유

→ Http의 특징은 비연결을 지향하고 상태를 유지하지 않는 것인데 상태를 유지해야만 할때가 있어서 그때 쿠키와 세션을 사용합니다.

  1. Connectless 프로토콜 (비 연결지향)

    클라이언트가 서버에게 요청을 했을 때, 그 요청에 맞는 응답을 보낸 후 연결을 끊는 처리방식

  2. Stateless 프로토콜

    통신이 끝나면 상태를 유지하지 않는 특징

쿠키와 세션은 이 두자기 특징을 해결하기 위해 사용한다.

  • 쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
  • 유효한 시간을 명시할 수 있고, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.

쿠키 사용 예

  • 방문 사이트에서 로그인 시, “아이디와 비밀번호를 저장하시겠습니까?”
  • 쇼핑몰의 장바구니
  • 팝업에서 “오늘 더이상 이 창을 보지 않음”
  • 최근 검색한 상품들 광고에서 추천

세션 (Session)

  • 서버에 저장되고 관리되어 진다.
  • 웹 브라우저 당 1개씩 생성되며 웹 컨테이너에 저장되고 브라우저 종료시 소멸된다.
  • 각 클라이언트 고유 Session ID를 부여한다.
  • 보안 면에서 서버에 저장되니 우수하다
  • 브라우저가 종료되면 만료시간에 상관없이 삭제된다.

세션 사용 예

  • 화면이 이동해도 로그인이 풀리지 않고 로그아웃 전까지 유지

쿠키 vs 세션 vs 로컬 스토리지

쿠키세션로컬 스토리지
저장 위치클라이언트(접속자 PC)서버클라이언트(접속자 PC)
저장 형식textobjectstring
만료 시점쿠키 저장시 설정브라우저 종료시, 만료 삭제x (영구히 저장가능)
사용하는 자원클라이언트웹 서버클라이언트
용량 제한총 300개, 하나의 도메인 당 20개, 하나의 쿠키 당 4KB서버가 허용하는 한 용량제한 없음5MB
속도빠름느림
보안안좋음좋음안좋음
전송 조건매번 서버로 전송매번 서버로 전송요청해야 전송

세션을 이용하면 좋은데 왜 쿠키를 사용할까?

세션은 서버의 자원을 사용하기 때문에 서버 메모리가 감당할 수 없어 질 수가 있고 속도가 느려질 수 있다.

reference

https://interconnection.tistory.com/74