Post

쿠키(cookie), 세션(session), 캐시(cache)

HTTP의 특징

  • Connectionless (비연결 지향)
    • 클라이언트에서 서버에 요청을 보내면 서버는 클라이언트에 응답을 보내고 접속을 끊는다.
  • Stateless (상태 정보 유지 안함)
    • 응답하고 접속을 끊기 때문에 클라이언트의 상태 정보를 알 수 없다.

쿠키와 세션은 이러한 HTTP 프로토콜의 약점을 보완하기 위해 사용한다.

  • 웹 사이트에 접속할 때 서버에 의해 사용자의 컴퓨터에 저장되는 정보
  • 사용자의 컴퓨터에 마치 과자 부스러기가 남아 있는 것과 같다고 해서 ‘쿠키(cookie)’라는 명칭이 붙었다.
  • 로그인 정보 같이 유저가 굳이 다시 서버에 다시 요청하기에는 비효율적인 정보를 key-value 형식의 데이터 파일로 로컬에 저장
  • 이름, 값 만료기간(지정 가능), 경로 정보 등으로 구성
  • 탈취와 변조가 가능하기 때문에 로그인 정보를 저장할 경우 보안성이 낮아진다.
  • 암호화 설정 등을 통해 클라이언트의 접근을 차단해서 해커가 자바스크립트 코드를 통해 정보를 탈취하는 것을 방지할 수도 있다.
  • 최대 300개 저장 가능
  • ex) 자동 로그인, 팝업 다시보지 않기, 장바구니


  1. 클라이언트가 서버에 페이지를 요청
  2. 서버는 클라이언트의 HTTP 헤더에 set-cookie 값을 추가하여 응답하여 클라이언트의 로컬에 쿠키를 만듦
  3. 클라이언트의 브라우저는 이후 서버에 같은 요청을 할 때 전달받은 쿠키를 자동으로 요청 헤더에 추가하여 보냄
  4. 서버에서는 쿠키의 정보를 변경할 필요가 있을 때 쿠키를 업데이트 하여 HTTP 헤더에 포함시켜 응답


종류특징
Session Cookie보통 만료시간을 설정하고 메모리에만 저장되며 브라우저 종료 시 삭제
Persistent Cookie장기간 유지되는 쿠키(예를 들어 Max-Age 1년). 파일로 저장되어 브라우저 종료와 관계없이 사용
Secure CookieHTTPS에서만 사용, 쿠키 정보가 암호화 되어 전송
Third-Party Cookie방문한 도메인과 다른 도메인의 쿠키. 보통 광고 배너 등을 관리할 때 유입 경로를 추적하기 위해 사용 (ex. 11번가에서 봤던 상품이 뉴스 사이트에서 계속 따라다니며 노출되는 경우)

세션 (Session)

  • 쿠키를 기반하고 있지만, 데이터를 로컬에 저장하는 쿠키와 달리 세션은 서버 측에서 관리
  • 클라이언트가 서버에 접속하면 서버는 유니크한 sessionid를 저장하며 클라이언트가 브라우저를 종료하거나 유효시간이 지날 때까지 인증상태를 유지
  • 클라이언트가 쿠키를 헤더에 담아 요청하면 서버에서는 요청 헤더의 sessionid 값을 저장된 세션저장소에서 찾아보고 유효한지 확인 후 요청을 처리하고 응답
  • 세션을 많이 저장할수록 서버에 부하가 발생한다.



쿠키와 세션의 차이

  • 쿠키는 클라이언트 측에 저장되고, 세션은 서버에 저장됨
  • 쿠키는 탈취와 변조가 가능하지만, 세션은 ID값만 가지고 있고 서버에도 저장이 되어있기 때문에 상대적으로 안전

캐시

  • 리소스 파일들을 사용자의 컴퓨터에 저장
  • 같은 웹 페이지에 접속할 때 사용자의 PC에서 로드하므로 서버를 거치지 않아도 된다.
  • 이전에 사용되었던 데이터를 다시 사용하여 속도가 빠르다.
  • ex) css, js 파일 등

참고사이트

[WEB] 쿠키, 세션이란?
쿠키와 세션 개념
[HTTP] 쿠키/세션/캐시의 차이점은?
쿠키(cookie), 세션(session) 과 캐시(cache) - 네트워크 study3
쿠키(Cookie) 그리고 세션(Session)

This post is licensed under CC BY 4.0 by the author.