본문 바로가기

IT Knowledge

쿠키와 세션의 특징과 차이점

쿠키와 세션을 알아보기 전에

왜 사용하는지 이유 부터 알아보겠습니다.

 

쿠키와 세션을 사용하는 이유는 HTTP  프로토콜의 특징 때문입니다.

클라이언트가 서버에 요청히면 응답을 보내고 연결을 끊는 Stateless 형식으로 상태 정보는 유지하지 않는 특성이 있습니다. 하지만 데이터 유지가 필요한 상황이 많이 있는데 이때, 쿠키와 세션을 통해 데이터를 유지하기 위해 사용합니다.

 

쿠키

- 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 기록 정보 파일

- 클라이언트 PC에 저장했다가 필요 시 정보를 참조하고 재사용할 수 있습니다.

- 이름, 값, 만료일, 경로 등의 정보로 구성되어 있다

- 클라이언트에 총 300개의 쿠키를 저장할 수 있고 도메인 당 20개의 쿠키를 가질 수 있다.

- 쿠키 하나 당 4KB 까지 저장 가능하다.

동작 순서

1. 클라이언트가 페이지를 요청

2. 웹 서버가 쿠키를 생성

3. 생성한 쿠키에 정보를 담아 HTTP 화면을 전송할 때 같이 전송한다.

4. 클라이언트는 쿠키를 가지고 있다가 서버에 재 요청할 때 요청과 함께 쿠키를 같이 전송한다

5. 동일한 사이트를 재 방문 시 클라이언트 PC에 쿠키가 있으면 페이지와 함께 쿠키를 전송한다

예시

페이지 로그인 정보 저장

창 다시 보지 않기 기능

 

세션

- 일정 시간 동안 특정 사용자로 부터 들어오는 요청을 하나의 상태로 보고 상태를 유지시키는 기술

- 사용자가 웹 브라우저의 연결을 종료시킬 때 까지 유지된다.

- 웹 서버에 웹 컨테이너 상태를 유지하기 위한 정보를 저장한다

- 쿠키보다 보안성이 높다

- 서버 용량이 허용하는 한, 저장 데이터에 제한이 없다

- 클라이언트 별 고유 세션 ID를 부여하여 구별한다

 

동작 순서

1. 클라이언트가 페이지를 요청한다

2. 서버에서 클라이언트의 쿠키를 확인하고 해당 세션 ID를 보냈는지 확인한다.

3. 세션 ID가 없다면 새로 생성하여 클라이언트에게 전송한다

4. 클라이언트는 받은 세션 ID를 쿠키에 저장한다

5. 클라이언트가 서버에 요청 시 쿠키의 세션 ID 값을 같이 전달한다

6. 서버는 전달받은 세션 ID로 세션에 있는 클라이언트 정보를 가지고 요청을 처리한다

 

예시

화면을 이동해도 로그인이 유지

 

쿠키와 세션의 차이점

  • 쿠키는 서버의 자원을 사용하지 않지만 세션은 서버의 자원을 사용함
  • 쿠키는 클라이언트 로컬에 저장되어 변질되거나 스니핑의 위험이 있지만 세션은 세션 ID만 저장하고 서버에서 처리하기 때문에 비교적 보안성이 더 높다
  • 라이프 사이클의 경우 쿠키는 만료기간을 따로 지정해 쿠키를 삭제라 때까지 유지할 수 있고 브라우저를 종료해도 정보를 유지할 수 있지만 세션은 브라우저가 종료되면 삭제된다
  • 쿠키에는 정보가 있어 서버 요청 시 속도가 빠르지만 세션은 정보가 서버에 있어 처리되는데 비교적 느리다

'IT Knowledge' 카테고리의 다른 글

인터넷 상에 노출된 자격증명 탐지  (0) 2024.05.03
Vault by HashiCorp  (0) 2024.03.07
GitHub - github support for password authentication was removed 토큰 인증 에러  (0) 2023.12.11
Observability  (0) 2023.11.09
LDAP  (0) 2023.10.06