쿠키 vs 세션

katrina·2021년 10월 22일
0

HTTP 특징

Connectionless
클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어 버리는 특징.(HTTP1.1 connection헤더에 keep-alive라고 설정하면 connection 유지 가능)
Stateless
통신이 끝나면 상태를 유지하지 않는 특징. 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식.
stateful 경우(로그인 후 인증상태 등)를 대처하기 위해 쿠키/세션 사용.

HTTP프로토콜 특징이자 약점을 보완하기 위해 쿠키와 세션을 사용함.

쿠키 vs 세션

저장위치
쿠키는 로컬, 세션은 로컬과 서버
보안
쿠키는 탈취,변조 가능. 세션은 id값만 가지고 있고 서버에 저장되어 있기때문에 비교적 안전.
lifecycle
쿠키는 브라우저를 종료해도 파일로 남아있지만, 세션은 브라우저 종료시 세션 삭제
속도
쿠키는 파일에서 읽기 때문에 상대적으로 빠르고, 세션은 요청마다 서버에서 처리하기 때문에 비교적 느림.

쿠키

클라이언트 로컬에 저장되는 key-value쌍의 작은 데이터 파일

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

동작순서

  1. 클라이언트가 페이지 요청.
  2. 웹서버 쿠키 생성
  3. HTTP 헤더에 쿠키를 포함하여 클라이언트에 응답
  4. 로컬 PC에 저장한뒤 다시 서버에 요청할때 쿠키 전송.
  5. 동일 사이트 재방문시 클라이언트의 PC의 해당 쿠키가 있는 경우 요청 페이지와 함께 쿠키 전송
    예) 아이디/비밀번호 자동 입력

세션

브라우져가 종료되기 전까지 클라이언트의 요청을 유지하게 해주는 기술

  • 웹서버의 저장되는 쿠키(=세션 쿠키)
  • 각 클라이언트에게 고유 id 부여
  • 보안면에서 쿠키보다 우수
  • 사용자가 많아질수록 서버 메모리를 많이 차지함.

동작순서

  1. client가 서버에 처음으로 request 보냄(첫 요청이므로 session id 미존재)
  2. 서버는 session id 쿠키값이 없는 것을 확인하고 새로 발급해서 응답
  3. 이후 클라이언트는 전달 받은 session id값을 매요청마다 헤더 쿠키에 넣어서 요청
  4. 서버는 session-id를 확인하여 사용자 식별
  5. 클라이언트가 로그인을 요청하면 서버는 session을 로그인한 사용자 정보로 갱신하고 새로운 session id를 발급하여 응답
  6. 이후 클라이어트는 로그인 사용자의 session id 쿠키를 요청과 함께 전달하고 서버에서도 로그인된 사용자라 식별 가능.
  7. 클라이언트 종료시 session id제거, 서버에서도 세션 제거
    예) 로그인

0개의 댓글