인증과 인가 (2) : 쿠키와 세션

이민호·2024년 5월 23일

쿠키

쿠키란?

쿠키는 웹 서버가 생성하여 웹 브라우저로 전송하는 작은 정보 파일입니다. 웹 브라우저는 수신한 쿠키를 미리 정해진 기간 동안 또는 웹 사이트에서의 사용자 세션 기간 동안 저장합니다. 웹 브라우저는 향후 사용자가 웹 서버에 요청할 때 관련 쿠키를 첨부합니다.

쿠키는 웹 사이트에 사용자에 대한 정보를 제공하여 웹 사이트에서 사용자 경험을 맞춤화하는 데 도움이 됩니다. 예를 들어, 전자 상거래 웹 사이트에서는 쿠키를 사용하여 사용자가 장바구니에 어떤 상품을 담았는지 파악합니다. 또한 인증 쿠키(아래 참조)와 같이 보안을 위해 필요한 쿠키도 있습니다.

인터넷에서 사용되는 쿠키를 "HTTP 쿠키"라고도 합니다.대부분의 웹과 마찬가지로 쿠키는 HTTP 프로토콜을 사용하여 전송됩니다.

쿠키는 어디?

  • 크롬의 개발자도구 - F12
    웹 브라우저는 사용자 기기의 지정된 파일에 쿠키를 저장합니다.예를 들어, Google Chrome 웹 브라우저는 모든 쿠키를 "Cookies"라는 파일에 저장합니다.Chrome 사용자는 개발자 도구를 열고 "애플리케이션" 탭을 클릭한 다음 왼쪽 메뉴에서 "쿠키"를 클릭하여 브라우저에 저장된 쿠키를 확인할 수 있습니다.
  • 구성요소
    • Name (이름): 쿠키를 구별하는 데 사용되는 키 (중복될 수 없음)
    • Value (값): 쿠키의 값
    • Domain (도메인): 쿠키가 저장된 도메인
    • Path (경로): 쿠키가 사용되는 경로
    • Expires (만료기한): 쿠키의 만료기한 (만료기한 지나면 삭제됩니다.)

왜 쿠키?

사용자 세션

쿠키는 웹 사이트 활동을 특정 사용자와 연결하는 데 도움이 됩니다.세션 쿠키에는 사용자 세션과 해당 사용자의 관련 데이터 및 콘텐츠를 일치시키는 고유 문자열(문자와 숫자의 조합)이 포함되어 있습니다.

Alice가 쇼핑 웹 사이트에 계정이 있다고 가정해 보겠습니다. Alice가 웹 사이트 홈페이지에서 자신의 계정에 로그인합니다. Alice가 로그인하면 웹 사이트 서버에서 세션 쿠키가 생성되고 이 쿠키가 Alice의 브라우저로 전송됩니다. 이 쿠키에서 웹 사이트에 Alice의 계정 콘텐츠를 로드하도록 지시되므로 이제 홈페이지에 "환영합니다, Alice"라는 메시지가 표시됩니다.

그런 다음 Alice는 청바지 한 켤레가 표시된 제품 페이지를 클릭합니다. Alice의 웹 브라우저에서 청바지 제품 페이지에 대한 HTTP 요청이 웹 사이트로 전송되면 요청에 Alice의 세션 쿠키가 포함됩니다. 웹 사이트에 이 쿠키가 있으므로 사용자가 Alice로 인식되고 새 페이지가 로드될 때 다시 로그인할 필요가 없습니다.

개인화

쿠키가 웹 사이트에서 사용자 행동 또는 사용자 기본 설정이 "기억"되는 데 도움이 되므로 웹 사이트에서 사용자 경험이 맞춤화될 수 있습니다.

Alice가 쇼핑 웹 사이트에서 로그아웃하면 사용자 이름이 쿠키에 저장되어 웹 브라우저로 전송될 수 있습니다. 다음에 해당 웹 사이트를 로드할 때 웹 브라우저에서는 이 쿠키가 웹 서버로 전송되고, 웹 서버에는 Alice에게 지난번에 사용한 사용자 이름으로 로그인하라는 메시지가 표시됩니다.

추적

일부 쿠키에는 사용자가 방문한 웹 사이트가 기록됩니다.이 정보는 다음에 브라우저가 해당 서버에서 콘텐츠를 로드할 때 쿠키를 생성한 서버로 전송됩니다.타사 추적 쿠키를 사용하면 브라우저가 해당 추적 서비스를 사용하는 웹 사이트를 로드할 때마다 이 프로세스가 수행됩니다.

Alice가 이전에 브라우저에 추적 쿠키를 전송한 웹 사이트를 방문한 적이 있는 경우, 이 쿠키에는 Alice가 현재 청바지 제품 페이지를 보고 있다는 사실이 기록될 수 있습니다. 다음에 Alice가 이 추적 서비스를 사용하는 웹 사이트를 로드할 때 청바지 광고가 표시될 수 있습니다.

세션

세션이란?

  • 클라이언트로부터 오는 일련의 요청을 하나의 상태로 보고 그 상태를 일정하게 유지하는 기술
  • 클라이언트가 웹 서버에 접속해있는 상태가 하나의 단위

세션은 웹서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장합니다. 브라우저를 닫거나 서버에서 세션을 삭제하면 세션이 삭제됩니다. 세션은 각 클라이언트의 고유세션 ID를 부여하는데, 이것으로 클라이언트를 구분하여 각 클라이언트의 요구에 맞는 응답을 반환합니다.

세션은 어떻게?

  1. 클라이언트 요청

  2. Request-Header 필드의 Cookie 에서 세션ID를 보냈는지 확인

  3. 세션ID가 없을 경우, 서버에서 생성하여 클라이언트에게 전송

  4. 쿠키를 사용해 세션ID를 서버에 저장

  5. 클라이언트 재접속 시, 쿠키를 이용하여 세션ID 값을 서버에 전달

쿠키 vs 세션

profile
둘뺌

0개의 댓글