기타

쿠키 vs 세션(cookie vs session)

호리둥절 2023. 4. 7. 11:04

공통점은 무엇일까?

쿠키와 세션은 모두 http 프로토콜에서 클라이언트와 서버가 상태를 유지하기 위해 사용되는 것입니다.

쿠키와 세션에 대해 알아보자

1. 쿠키 🍪

쿠키는 클라이언트 측에 저장되며, 웹서버에서 생성하여 http 응답 헤더를 통해 전송됩니다. 클라이언트는 이를 로컬에 저장하고, 이후 요청 시 에는 쿠키를 http 요청 헤더에 포함시켜 서버에 전송합니다. 서브는 해당 쿠키의 값을 참조하여 클라이언트의 상태를 파악합니다.

💛 쿠키의 특징

  • 클라이언트 측에 저장: 쿠키는 클라이언트 측(브라우저)에 저장되어 서버에서 사용자를 구별하거나 정보를 저장하게 됩니다.
  • 서버에서 생성 및 전송: 쿠키는 서버에서 생성되어 HTTP 응답 헤더에 포함되어 클라이언트로 전송됩니다.
  • 유효 기간 설정 가능: 쿠키는 만료일을 설정하여 지정된 날짜 이후에는 삭제될 수 있습니다.
  • 이름-값 쌍으로 저장: 쿠키는 이름과 값을 가지며, 이를 서버가 읽어서 사용합니다.
  • 다양한 용도로 활용: 쿠키는 사용자 식별, 세션 관리, 판매 추적 등 다양한 용도로 사용됩니다.

💛 쿠키의 사용 예시

쿠키는 서버에서 클라이언트로 전송되어 저장되는 작은 데이터 조각입니다. 쿠키를 사용하면 클라이언트와 서버 간의 지속적인 상태 정보를 유지할 수 있습니다. 다음은 쿠키를 사용한 예시입니다.

 

  • 로그인 유지 기능 : 사용자가 로그인 성공 시 서버에서 발급한 토큰을 쿠키에 저장합니다. 이후 사용자가 사이트를 방문할 때마다 쿠키에 저장된 토큰을 서버에 전송하여 로그인 상태를 유지합니다.
  • 사용자 환경 설정 기능 : 사용자가 언어, 테마 등의 환경 설정을 변경하면 이를 서버에서 쿠키에 저장합니다. 이후 사용자가 사이트를 방문할 때마다 쿠키에 저장된 설정을 서버에 전송하여 이전에 설정한 환경으로 표시합니다.
  • 광고 추적 기능 : 광고 주체는 쿠키를 사용하여 사용자의 행동을 추적합니다. 이후 추적 정보를 바탕으로 광고를 표시하거나 사용자에게 맞춤형 광고를 제공합니다.

2.세션

세션은 서버측에 클라이언트 정보를 저장하는 방식입니다. 클라이언트가 서버에 처음 요청을 보내면, 서버는 해당 클라이언트를 위한 고유한 세션 Id를 생성하고, 이를 쿠키에 저장하여 클라이언트에게 전송합니다. 클라이언트는 이후 요청시에 세션id를 쿠키에 담아 서버에 전송하게 됩니다. 서버는 세션id를 참조하여 해당클라이언트가 맞는지 파악합니다.

💛 세션의 특징

  • 서버 측에 저장 : 쿠키와 달리, 세션은 서버 측에 저장되며 클라이언트 측에서는 세션 ID만 가지고 있습니다.
  • 보안성이 높음 : 쿠키는 클라이언트 측에서 수정이 가능하므로 보안에 취약합니다. 하지만 세션은 서버 측에서 관리되므로 보안성이 높습니다.
  • 대부분의 경우 쿠키보다 느림 : 세션은 서버 측에서 관리되므로 쿠키보다 처리 시간이 느릴 수 있습니다. 하지만 최근에는 서버 부하를 줄이기 위해 세션을 메모리가 아닌 데이터베이스에 저장하는 경우가 많습니다.
  • 브라우저 종료 시 만료 : 쿠키는 만료일을 설정할 수 있지만, 세션은 대개 브라우저 종료 시에만 만료됩니다. 그러므로, 로그아웃을 하거나 일정 시간이 지난 후 세션을 만료시키는 등의 추가 작업이 필요합니다.
  • 상태 유지에 용이 : 세션은 쿠키와 달리 서버 측에서 유지되므로, 다양한 상태 정보를 저장하고 유지하기 용이합니다. 이를 통해 로그인 정보, 장바구니, 사용자 기본 설정 등을 저장하고 관리할 수 있습니다.

💛 세션의 사용 예시

세션(session)은 서버에서 클라이언트를 구분하고 클라이언트의 상태를 서버측에서 관리하기 위한 방법 중 하나입니다. 아래는 세션을 사용하는 예시입니다.

  • 로그인 기능 : 로그인할 때, 서버에서 해당 유저의 정보를 확인하고, 해당 유저에 대한 세션을 생성합니다. 이후 해당 세션을 쿠키나 헤더에 담아 클라이언트에게 전송합니다. 클라이언트는 이후 요청 시, 해당 세션을 서버에 보내주어 인증과정을 생략할 수 있습니다.
  • 온라인 게임 : 온라인 게임과 같이, 클라이언트의 상태를 서버에서 관리해야 할 때 세션을 사용할 수 있습니다. 예를 들어, 게임 내 아이템 보유 여부, 레벨, 경험치와 같은 정보는 클라이언트마다 다르기 때문에, 서버측에서 각 클라이언트의 상태를 세션에 저장하고, 클라이언트가 요청할 때마다 해당 세션을 이용하여 정보를 반환합니다.

 

쉽게 설명하자면 쿠키는 클라이언트 측에서 정보를 저장하고, 세션은 서버측에서 정보를 저장합니다. 쿠키는 일반적으로 영구적으로 유지되고, 세션은 브라우저를 닫거나 세션 타임아웃 등의 이유로 종료될 때까지 유지됩니다. 

 

쿠키와 세션 중에서 어느 것을 사용해야 할지는 사용 목적과 보안 등에 따라 다르게 결정됩니다. 쿠키는 클라이언트 측에서 데이터를 저장하고 관리하기 때문에 더 많은 제한이 있지만, 사용하기가 더 쉽고 성능도 더 빠릅니다. 세션은 서버 측에서 데이터를 저장하기 때문에 보안성이 더 높지만, 데이터 저장 및 처리가 더 복잡하고 느리며, 세션 ID를 전달하기 위한 추가적인 처리가 필요합니다.

따라서 보안이 중요한 경우에는 세션을 사용하고, 그렇지 않은 경우에는 쿠키를 사용하는 것이 일반적입니다.

'기타' 카테고리의 다른 글

aws 인스턴스 고정 IP (탄력적 IP) 생성하기  (0) 2023.08.03
aws ec2 서버 생성하기  (0) 2023.08.03
git 명령어 모음  (0) 2023.08.02
JWT(JSON Web Token) 토큰이란??  (0) 2023.04.07
파워쉘 보안 정책 문제해결  (0) 2023.04.05