Web

쿠키 & 세션

oagree0123 2021. 8. 30. 13:32

이전 글에서 HTTP 프로토콜은 요청 후 응답을 받으면 연결을 끊어 버리며, 통신이 끝나면 상태를 유지하지 않는 특성에 대해 확인했습니다. 이러한 특성 때문에 일어나는 문제를 해결하기 위해 쿠키와 세션을 사용합니다. 이번 글에서는 쿠키와 세션에 대해 알아보겠습니다.

 

기억이 안나거나 어떠한 내용인지 모르시는 분은 아래 글을 읽고 오시면 이해하는데 도움이 될 것입니다. :)

 

HTTP 프로토콜

url의 앞에 http나 https가 붙어있는 경우를 본적이 있을 것입니다. 이번 글에서는 HTTP가 무엇인지 알아보도록 하겠습니다. 그리고 HTTP 와 HTTPS의 차이점을 간단하게 확인해 보겠습니다. 프로토콜 프

oagree0123.tistory.com


쿠키와 세션을 사용해야 하는 이유로 가장 흔한 예시는 로그인을 이야기할 수 있습니다.  위에서 말했듯 HTTP 프로토콜은 정보가 유지되지 않는데 이는 매번 페이지를 이동할 때마다 로그인을 다시해야 개인의 정보가 유지될 것입니다. 또한, 상품을 장바구니 기능에 담아 놓아도 다시 확인할 수 없는 일이 발생하게 됩니다.

1. 쿠키 (Cookie)

쿠키는 클라이언트 로컬에 저장되는 키(Key)와 값(Value)이 들어있는 작은 데이터 파일입니다. 쿠키는 사용자 인증에 유효한 시간을 명시할 수 있으며, 유효 시간이 남아있으면 브라우저가 종료되어도 인증이 유지된다는 특징을 가집니다. 쿠키는 이름, 값, 유효시간, 전송할 도메인, 전송할 경로로 구성되어 있습니다.

 

쿠키는 Response Header에 Set-Cookie 속성을 사용해 클라이언트 쿠키를 만듭니다. 쿠키는 사용자가 별도로 요청하지 않아도 클라이언트에서 서버에 요청할 경우 Request Header에 쿠키 값을 자동으로 넣어 요청합니다.

 

쿠키의 동작 과정

  • 클라이언트가 서버에 페이지를 요청
  • 웹 서버는 쿠키를 생성
  • 클라이언트가 요청한 웹 페이지를 응답으로 받을 때, HTTP 헤더를 통해 쿠키 값을 포함하여 응답
  • 브라우저가 종료되어도 쿠키의 유효 시간이 있으면 클라이언트에서 보관 유지
  • 같은 요청시 HTTP 헤더에 쿠키를 함께 담아서 요청
  • 서버는 클라이언트의 쿠키 값을 참고하여 로그인 상태 유지 등 로직을 수행

 

2. 세션 (Session)

세션은 일정 시간동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술입니다. 세션은 쿠키를 기반으로 하고 있지만, 사용자의 정보를 서버에 저장, 관리합니다. 세션은 사용자 정보를 서버에 두기 때문에 보안이 좋지만, 사용자가 많아질 수 록 메모리를 많이 차지하게 되므로 성능의 저하가 일어날 수 있습니다. 클라이언트가 요청을 보내면, 서버에서 클라이언트에게 고유한 Session ID를 부여합니다.

 

세션의 동작 과정

  • 클라이언트가 서버에 페이지를 요청
  • 서버는 클라이언트에게 고유의 Session ID를 발급
  • 클라이언트는 발급받은 Session ID를 쿠키로 저장 (쿠키 이름 : JSESSIONID)
  • 클라이언트는 서버에 재요청시 Session ID를 서버에 전달
  • 서버는 Session ID를 받아 클라이언트의 정보를 가져와 응답

 

3. 쿠키와 세션의 차이점

  쿠키 (Cookie) 세션 (Session)
저장 위치 클라이언트 웹 서버
만료 시점 쿠키 저장시 설정
(설정 없으면 브라우저 종료 시)
브라우저 종료시 삭제
(기간 지정 가능)
리소스 클라이언트 리소스 서버의 리소스
용량 제한 총 300개
한 도메인 당 20개, 한 쿠키당 4KB
제한 없음
속도  세션보다 빠름 쿠키보다 느림
보안 세션보다 안 좋음 쿠키보다 좋음

위의 표에 대해 조금더 설명하자면 쿠키는 클라이언트에 정보가 있기 때문에 세션보다 상대적으로 빠르고, 세션은 요청마다 서버에서 처리를 해야하기 때문에 쿠키보다 느립니다. 

또한 쿠키는 클라이언트 로컬에 저장되기 때문에 탈취와 변조가가 가능하지만, 세션은 ID값만 가지고 있고 서버에 저장되기 때문에 상대적으로 안전합니다.

 


참고 문서

 

쿠키와 세션 개념

쿠키와 세션은 개발자 말고도 인터넷 사용자라면 누구나 많이 들어본 단어입니다. 하지만 개념에 대해서는 많은 사람들이 헷갈려 하기에 쉽고 간단하게 정리해보려고 합니다. 일

interconnection.tistory.com