[WEB] 쿠키(Cookie) & 세션(Session)

in·2023년 8월 21일
0

WEB

목록 보기
2/11

쿠키(Cookie)

HTTP의 일종으로 사용자가 어떤 웹 사이트에 방문할 경우, 그 사이트가 사용라고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일

쿠키 특징

  • 이름, 값, 만료일(저장 기간 설정), 경로 정보로 구성
  • 클라이언트에 총 300개의 쿠키 저장 가능
  • 하나의 도메인 당 20개의 쿠키 가질 수 있음
  • 하나의 쿠키는 4KB(4096byte)까지 저장 가능

쿠키 동작 순서

  1. 클라이언트가 페이지 요청(사용자가 웹 사이트 접근)
  2. 웹 서버는 쿠키 생성
  3. 생성한 쿠키에 정보 담아 HTTP 화면 돌려줄 때 같이 클라이언트에게 돌려줌
  4. 넘겨 받은 쿠키는 클라이언트가 가지고 있다가(로컬 PC에 저장) 다시 서버에 요청할 때 요청과 함께 쿠키 전송
  5. 동일 사이트 재방문시 클라이언트의 PC에 해당 쿠키 있는 경우 요청 페이지와 함꼐 쿠키 전송

쿠키 사용 예시

  1. 방문했던 사이트에 다시 방문 했을 때 아이디, 비밀번호 자동 입력
  2. 팝업창을 통해 오늘 이 창 다시 보지 않기 체크
  3. 장바구니 기능

세션(Session)

일정 시간동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술

세션 특징

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

세션 동작 순서

  1. 클라이언트가 페이지 요청(사용자가 웹 사이트 접근)
  2. 서버는 접근한 클라이언트의 Request-Header 필드인 Cookie를 확인하여 클라이언트가 해당 Session ID를 보냈는지 확인
  3. Session ID가 존재하지 않으면 서버는 Session ID를 생성해 클라이언트에게 돌려줌
  4. 서버에서 클라이언트로 돌려준 Session ID를 쿠키를 사용해 서버에 저장(쿠키 이름:JSESSIONID)
  5. 클라이언트는 재접속 시, JSESSIONID 이용하여 Session ID 값을 서버에 전달

세션 사용 예시

  1. 화면이 이동해도 로그인이 풀리지 않고 로그아웃하기 전까지 유지

쿠키 VS 세션

쿠키(Cookie)세션(Session)
저장 위치클라이언트(접속자 PC)웹 서버
저장 형식textObject
만료 시점저장 시 설정브라우저 종료 시
리소스클라이언트 리소스웹 서버 리소스
용량 제한도메인 당 20개
쿠키 당 4KB
제한X(서버가 허용하는 만큼)
속도빠름(세션보다)느림(쿠키보다)
보안도낮음(세션보다)높음(쿠키보다)

쿠키와 세션을 사용하는 이유

HTTP 프로토콜의 특성이자 약점을 보완하기 위해
-> connectionless : 클라이언트가 요청을 한 후 응답을 받으면 연결을 끊어버리는 특징
-> stateless : 통신이 끝나면 상태를 유지하지 않는 특징

세션을 사용해도 되는데 쿠키를 사용하는 이유

서버 자원의 낭비를 방지하고 웹 사이트의 속도를 높이기 위해(세션은 서버에 저장되어 서버 자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원 많음)

0개의 댓글