[CS] 쿠키와 세션

장다슬·2024년 4월 26일

CS 스터디

목록 보기
15/23

웹에서 사용자의 상태 정보 저장 및 유지를 위해 사용하는 것으로, HTTP의 특징이자 약점인 비연결성과 무상태성을 보완한다.

HTTP의 특징으로 요청과 응답이 완료 되면 연결을 끊는 Connectionless(비연결성)와 이전 상태 정보를 유지하지 않는 Stateless(무상태성)가 있다.

그러나 웹 사이트를 이용하다 보면 데이터가 유지되어야 하는 상황이 필연적으로 있기 마련이다.

이런 경우 상태 저장 및 유지를 위해 쿠키(Cookie)세션(Session)을 사용한다.


클라이언트(브라우저)에 저장되는 작은 데이터 파일로, Key-Value 쌍으로 이루어짐

특징

  • 클라이언트(브라우저)에 저장
  • 이름(Key), 값(Value), 만료일(저장기간), 경로 정보로 구성
  • 클라이언트에 총 300개의 쿠키 저장 가능
  • 하나의 도메인 당 20개의 쿠키 보유 가능
  • 하나의 쿠키는 4KB(4096byte)까지 저장 가능
  • 유효 시간이면 브라우저가 종료되어도 인증이 유지
  • 별도의 요청없이 자동으로 Request Header에 쿠키를 실어 서버로 전송

동작 순서

  1. 클라이언트가 페이지를 요청
  2. 웹 서버에서 쿠키 생성
  3. 생성한 쿠키를 HTTP 헤더에 포함, 클라이언트에게 응답
  4. 클라이언트는 쿠키를 가지고 있다가 서버에 요청시 함께 전송
  5. 웹 사이트 재방문 시, 클라이언트 PC가 해당 쿠키를 보유하고 있다면 요청 페이지와 함께 쿠키 전송


⚙️ 세션 Session

일정 시간 동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술. 쿠키 기반으로 동작하나 클라이언트가 아닌 서버에 저장된다.

특징

  • 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장
  • 웹 서버에 저장되는 쿠키(세션 쿠키)
  • 브라우저를 닫거나 서버에서 세션을 삭제했을 때만 제거가 되므로 쿠키보다 비교적 보안이 좋음
  • 서버 용량이 허용하는 한에서 저장 데이터의 제한이 없음
  • 각 클라이언트에 고유 세션 ID(Session ID)를 부여, 세션 ID를 통해 클라이언트를 구분하여 각 요구에 맞는 서비스를 제공

동작 순서

  1. 클라이언트가 페이지를 요청
  2. 서버는 클라이언트의 Request Header Cookie를 확인, 클라이언트 Session ID 를 확인
  3. Session ID가 존재하지 않을시 생성하여 클라이언트에게 응답
  4. 클라이언트는 서버로부터 받은 Session ID를 쿠키에 저장
  5. 클라이언트는 서버에 요청시 해당 쿠키 Session ID 값을 함께 서버에 전달
  6. 서버는 전달받은 Session ID로 세션에 있는 클라이언트 정보를 가지고, 요청을 처리한 후 응답


쿠키와 세션의 차이

쿠키세션
저장 위치클라이언트서버
보안변조 또는 유출의 위험 존재쿠키에 비해 상대적으로 안전
생명 주기만료날짜까지,
만료날짜 미설정시 브라우저 종료시까지
브라우저를 종료시까지,
명시적으로 세션 종료시까지
속도빠름느림
저장 형식TextObject
데이터 용량쿠키 하나당 4KB서버의 디스크 용량에 따름
특이 사항해당 도메인에 발송되는
모든 요청에 자동으로 실려 전송
각 브라우저 당 하나씩 세션 방을 가짐


참고:
쿠키(Cookie)와 세션(Session)의 차이 (+캐시(Cache))
세션 vs 쿠키 vs 캐시 차이점
쿠키(Cookie) & 세션(Session)
[Web] 웹 브라우저 쿠키(Cookie)와 세션(Session)의 개념
쿠키(Cookie)와 세션(Session)

profile
반갑습니다

0개의 댓글