Cookie와 Session & Session store

cozups·2022년 5월 22일
0

쿠키 Cookie

사용자가 어떤 웹 사이트에 접속하는 경우,
그 사이트의 서버는 사용자의 컴퓨터에 작은 기록 파일을 저장하게 된다.

HTTP에서 클라이언트에 대한 정보를 클라이언트의 PC에 저장해놓고,
필요 시 정보를 참조하거나 재사용할 수 있다.

쿠키의 특징

  1. 이름, 값, 만료일, 경로 정보 등으로 이루어져 있다.
  2. 최대 파일 크기는 4KB이다.
  3. 사용자가 만료일을 지정할 수 있다.
  4. 하나의 도메인에 20개의 쿠키를 저장할 수 있다.
  5. 클라이언트는 최대 300개의 쿠키를 저장할 수 있다.

쿠키의 동작 과정

  1. 사용자가 웹 사이트에 접근한다.
  2. 웹 서버가 쿠키를 생성한다.
  3. 생성한 쿠키에 정보를 담아, 페이지를 띄울 때 클라이언트에게 쿠키를 전달한다.
  4. 넘겨 받은 쿠키는 클라이언트가 가지고 있다가, 다시 서버에 요청할 때 요청과 함께 쿠키를 전송한다.
  5. 동일 페이지에 재방문 시, 클라이언트의 pc에 쿠키가 있다면 페이지와 함께 쿠키를 전송한다.

쿠키의 단점

  • 매 요청마다 헤더에 쿠키를 담아야 하기 때문에 상당한 트래픽을 요구한다.
  • 보안이 취약하다.

쿠키 사용 예시

  • 방문했던 사이트를 재방문 했을 때, 아이디와 비밀번호가 자동 입력된다.
  • 팝업창을 통해 "오늘 이 창을 다시 보지 않기" 체크

세션 Session

사용자가 웹 서버에 접속해있는 동안에 보내는 요청들을 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이다.

세션의 특징

  1. 웹 서버에 웹 컨테이너의 상태를 저장하기 위한 정보를 저장한다.
  2. 웹 서버에 저장되는 쿠키를 세션 쿠키라고 한다.
  3. 브라우저를 닫거나, 세션을 삭제했을 때만 세션이 삭제되므로 쿠키에 비하여 보안성이 좋다.
  4. 저장 데이터에 제한이 없다. (기본적으로 스크립트가 한 번에 처리할 수 있는 용량 단위인 128MB라고 함)
  5. 각 클라이언트 고유 session ID를 부여하고 이 session ID를 이용하여 각 클라이언트에 맞는 요청들을 해결한다.

세션의 동작 과정

  1. 사용자가 웹 사이트에 접속한다.
  2. 서버는 클라이언트의 HTTP Request-Header 필드에 있는 cookie를 이용하여 클라이언트가 해당 session ID를 보냈는지 확인한다.
  3. session ID가 없다면 서버는 session ID를 생성하고 set-Cookie를 사용하여 쿠키에 session ID를 저장한다.
  4. 클라이언트는 HTTP Request-Header에 session ID를 포함하여 다음 요청을 보낸다.
  5. 서버는 session ID를 통해 클라이언트 상태 정보를 유지하며 적절히 응답한다.

세션 사용 예시

화면이 이동해도 로그인이 풀리지 않고 유지된다.




쿠키는 client-side에 유저 정보를 저장하고, 세션은 server-side에 유저 정보를 저장한다고 보면 편할 듯 하다.

세션 스토어 Session Store

세션은 어플리케이션이 종료되면 삭제된다.
따라서 어플리케이션을 종료했다가 다시 시작하면 유저들의 로그인은 모두 풀려있는 상태가 된다.
그리고 세션은 서버마다 존재하기 때문에 여러 대의 서버가 있는 경우, 서버 간 세션 정보를 공유할 수 없다.

이런 경우, 세션 스토어를 사용하면 어플리케이션을 종료하여도 로그인을 유지할 수 있다.

이러한 형태로 연결되어 있다.
세션이 세션 스토어 안에 있기 때문에 어플리케이션이 종료되더라도 세션이 사라지지 않아 상태를 유지할 수 있다.

profile
이제는 더 이상 물러날 곳이 없다

0개의 댓글