본문 바로가기
카테고리 없음

쿠키와 세션의 차이점-웹에서 내가 하는 일들이 추적 된다?.

by 엄목동 2023. 9. 24.

쿠키와 세션은 웹 개발에서 각각 클라이언트(사용자) 측과 서버 측의 데이터를 관리하고 저장하는 데 사용되는 메커니즘입니다. 서로 다른 용도로 사용되며 이 둘의 고유한 특징과 사용 사례 및 설정 방법에 대해 살펴보겠습니다.

1.쿠키(Cookie)

1.1.정의

쿠키는 웹 서버가 사용자의 웹 브라우저로 전송하는 작은 데이터 조각입니다. 브라우저는 이 데이터를 사용자 디바이스에 로컬로 저장합니다. 쿠키는 주로 HTTP 요청과 응답 사이에서 사용자별 정보를 추적하고 저장하는 데 사용됩니다.

1.2.특징

상태 비저장 프로토콜 처리: 웹 통신에 사용되는 프로토콜인 HTTP는 상태 비저장형 프로토콜로, 각 요청-응답 주기가 독립적입니다. 쿠키는 여러 상호 작용에서 상태 정보를 유지하는 데 도움이 됩니다.

  • 저장 제한
    쿠키에는 크기 제한(일반적으로 쿠키당 몇 킬로바이트)이 있으며, 브라우저는 일반적으로 도메인당 쿠키 수(일반적으로 약 20~50개)에 제한을 둡니다.
  • 지속성
    쿠키는 특정 기간(세션 쿠키) 후에 만료되도록 설정하거나 만료일을 지정할 수 있습니다. 영구 쿠키는 사용자가 브라우저를 닫고 나중에 웹사이트로 돌아온 후에도 유지될 수 있습니다.
  • 범위
    특정 도메인 또는 하위 도메인에 쿠키가 적용되도록 설정하여 각 요청 시 쿠키가 전송되는 위치를 제어할 수 있습니다.
  • 보안 문제
    쿠키는 적절하게 구현되고 보안이 유지되지 않으면 크로스 사이트 스크립팅(XSS) 및 크로스 사이트 요청 위조(CSRF)와 같은 보안 위험에 취약합니다.

1.3.사용 사례

  • 사용자 인증
    쿠키는 일반적으로 로그인 후 사용자 세션을 유지하는 데 사용됩니다. 사용자가 로그인하면 서버는 세션을 생성하고 세션 ID를 쿠키로 전송합니다. 이후 요청이 있을 때마다 서버는 세션 ID의 유효성을 검사하여 사용자가 인증되었는지 확인합니다.
  • 쇼핑 카트
    전자상거래 웹사이트는 쿠키를 사용하여 장바구니에 항목을 저장합니다. 장바구니 콘텐츠는 쿠키에 저장되어 사용자가 여러 페이지에서 계속 쇼핑할 수 있습니다.
  • 개인화
    쿠키는 언어 설정, 테마 선택 또는 글꼴 크기와 같은 사용자 기본 설정을 저장하는 데 사용할 수 있습니다.
  • 추적
    쿠키는 웹사이트에서의 사용자 행동을 추적하는 데 사용됩니다. 이 데이터는 분석, 광고 및 사용자 경험 개선에 사용될 수 있습니다.

1.4.쿠키 설정

웹 서버는 HTTP 응답 중에 사용자의 웹 브라우저에 쿠키를 보냅니다. 서버는 쿠키의 이름, 값 및 선택적 속성을 지정하기 위해 응답에 "Set-Cookie" 헤더를 포함합니다.

Set-Cookie: username=johndoe; expires=Fri, 30 Sep 2023 23:59:59 GMT; path=/; domain=example.com; secure; HttpOnly;

 이 예제에서는 " username"이라는 쿠키가 "johndoe" 값으로 설정되어 있습니다. 이 쿠키는 만료일( expires), 지정된 경로(path), 도메인(domain), 보안(secure) 및 접근성('HttpOnly')을 위한 플래그를 갖습니다.

 

요청과 함께 쿠키 보내기
사용자가 동일한 웹사이트에 후속 요청을 할 때 브라우저는 해당 도메인과 관련된 쿠키를 HTTP 요청의 "Cookie" 헤더에 자동으로 포함합니다.

 

"Cookie: username=홍길동; sessionid=abc123", 이 요청에서 브라우저는 'username'과 'sessionid'라는 두 개의 쿠키를 서버로 전송합니다. 즉 위 코드는 “홍길동”이라는 사용자(username)의 abc123라는 세션(sessionid)을 의미합니다.

2.세션

2.1.정의

세션은 웹 서버가 여러 HTTP 요청 및 응답에서 사용자별 정보를 추적할 수 있도록 하는 서버 측 메커니즘입니다. 세션은 일반적으로 사용자 세션과 연결된 고유 식별자인 세션 ID를 사용하여 관리됩니다.

2.2.특성

  • 서버 측 스토리지
    클라이언트 디바이스에 저장되는 쿠키와 달리 세션 데이터는 서버에 저장됩니다.
  • 크기 제한 없음
    세션은 클라이언트 측 저장 공간 제한의 제약을 받지 않으므로 쿠키에 비해 더 많은 양의 데이터를 저장할 수 있습니다.
  • 보안
    세션은 민감한 데이터가 서버에 저장되어 클라이언트 측 공격에 노출될 위험이 줄어들기 때문에 일반적으로 쿠키보다 더 안전한 것으로 간주됩니다.
  • 세션 만료
    세션은 만료 시간을 설정할 수 있으며 단기 데이터 저장에 자주 사용됩니다.

2.3. 사용 사례

  • 사용자 인증
    사용자가 로그인하면 서버는 세션을 생성하고 사용자별 데이터(예: 사용자 ID)를 세션에 저장합니다. 이후 요청은 이 데이터에 액세스하여 사용자가 인증되었는지 확인할 수 있습니다.
  • 쇼핑 카트
    세션 데이터는 온라인 쇼핑에서 사용자의 장바구니 콘텐츠를 서버에 저장하여 여러 페이지에서 액세스할 수 있도록 하는 데 사용됩니다.
  • 양식 데이터 지속성
    사용자가 다단계 양식을 작성할 때 세션 데이터는 양식의 진행 상황을 임시로 저장하여 사용자가 중단한 부분부터 계속 진행할 수 있도록 합니다.
  • 액세스 제어
    세션은 웹 애플리케이션에 대한 사용자 액세스 제어 및 권한을 관리하는 데 사용됩니다. 세션에 저장된 데이터에는 사용자 역할 및 권한이 포함될 수 있습니다.

2.4. 세션 생성 및 관리

세션은 일반적으로 사용자가 웹사이트에 액세스할 때 서버에서 시작됩니다. 고유한 세션 ID가 생성되어 쿠키에 저장되거나 URL에 포함되는 경우가 많습니다. 세션 ID는 동일한 사용자의 후속 요청을 서버의 세션 데이터와 연결하는 데 사용됩니다.

  • 데이터 저장
    세션 데이터는 서버에 저장되므로 쿠키에 비해 더 많은 양의 데이터를 저장할 수 있습니다. 세션에 저장되는 데이터에는 사용자 정보, 장바구니 콘텐츠 등이 포함될 수 있습니다.

 

요약하면, 쿠키와 세션은 모두 웹 개발에서 사용자 데이터를 관리하고 상태 정보를 유지하기 위한 필수 도구입니다. 쿠키는 일반적으로 클라이언트 측 데이터 저장에 사용되며 세션 간에 지속될 수 있는 반면, 세션은 사용자가 웹사이트를 방문하는 동안 사용자별 데이터를 저장하는 데 사용되는 서버 측 메커니즘입니다. 쿠키와 세션 중 어떤 것을 선택할지는 웹 애플리케이션의 특정 요구 사항과 관리해야 하는 데이터 유형에 따라 달라집니다.