Cookie? Session?

uglyduck.dev·2020년 9월 22일
0

개념 모아 🗂

목록 보기
19/40

Cookie(쿠키)?

  • 웹 서버가 클라이언트(웹 브라우저) 컴퓨터에 저장하는 작은 데이터 파일 (최대 크기 4KB) 
  • 쿠키가 설정되면 뒤 따르는 모든 페이지 요청이 쿠키 이름과 값을 반환합니다.
  • 쿠키가 발급된 도메인에서만 읽을 수 있습니다. (최대 20개)

쿠키를 언제, 왜 사용할까?

HTTPStateless(상태를 유지하지 않음)하기 때문에쿠키를 사용하면 사용자 컴퓨터에 저장된 작은 파일을 사용하여 응용 프로그램의 상태를 추적할 수 있습니다.쿠키가 저장된 경로는 브라우저에 따라 다릅니다.

쿠키 동작 방식

  1. 클라이언트가 페이지를 요청
  2. 서버에서 쿠키를 생성
  3. HTTP 헤더에 쿠키를 포함시켜 응답
  4. 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있음
  5. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
  6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답

쿠키의 사용 예

  • 방문 사이트에서 로그인 시, "아이디와 비밀번호를 저장하시겠습니까?"
  • 쇼핑몰의 장바구니 기능
  • 자동 로그인, 팝업에서 "오늘 더 이상 이 창을 보지 않음" 체크, 쇼핑몰의 장바구니

Session(세션)?

  • 쿠키와는 달리 서버에 저장된 전역 변수
  • 세션에는 저장된 값을 검색하는데 고유한 ID가 할당
  • 세션이 생성될 때마다 고유 세션 ID를 포함하는 쿠키가 사용자의 컴퓨터에 저장되고 모든 요청과 함께 서버에 반환됩니다.
  • 세션은 쿠키에 비해 비교적 큰 데이터를 저장할 수 있음
  • 브라우저가 닫히면 세션 값이 자동으로 삭제됨

세션의 특징

  1. 클라이언트가 서버에 접속 시 세션 ID를 발급받는다.
  2. 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있는다.
  3. 클라이언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 서버에 전달해서 사용한다.
  4. 서버는 세션 ID를 전달받아서 별다른 작업 없이 세션 ID로 세션에 있는 클라이언트 정보를 가져온다.
  5. 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답합니다.

세션을 언제, 왜 사용할까?

  • 악의적인 사용자가 정보를 관리할 수 없는 서버에 사용자 ID와 같은 중요한 정보를 보다 안전하게 저장합니다.
  • 세션은 한 페이지에서 다른 페이지로 값을 전달하는 데 사용됩니다.
  • 쿠키를 지원하지 않는 브라우저의 쿠키 대신 쿠키를 대체하고 전역 변수를 URL에 전달하는 것보다 효율적이고 안전한 방식으로 저장
  • 일시적인 장바구니와 같은 응용 프로그램을 개발하려는 경우에도 사용됩니다.

쿠키 vs 세션

구분쿠키(Cookie)세션(Session)
저장 위치사용자 정보를 포함하는 클라이언트 측 파일(로컬)사용자 정보를 포함하는 서버 측 파일
라이프 사이클설정 한 수명(만료 시간)에 따라 종료브라우저 닫으면 소멸
저장 크기공식 최대 쿠키 크기는 4KB세션 내에서 원하는 만큼의 데이터를 저장할 수 있다. 도달할 수 있는 유일한 제한은 스크립트가 한 번에 소비할 수 있는 최대 메모리(기본적으로 128MB)입니다.
보안로컬에 저장되기 때문에 변질되거나 request에서 스니핑 당할 우려가 있음서버에서 처리돼며, 쿠키를 이용해 sessionid 만 저장하고 구분되므로, 비교적 보안성이 좋음
처리 속도서버의 자원들 사용하지 않고 쿠키에 정보가 남아 있으므로 요청시 처리 속도가 빠름서버의 자원을 사용하므로 쿠키에 비해 느린 속도를 냄

=> 세션을 무분별하게 사용하면 서버의 메모리가 감당할 수 없어질 수 있고 속도가 느려진다.

Reference

profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글