세션 vs 토큰 vs 쿠키? 그리고 JWT?

hyeon·2024년 11월 21일

1. 웹사이트 쿠키란?

쿠키는 웹사이트가 사용자의 브라우저에 저장하는 작은 데이터 조각입니다. 이는 본질적으로 사용자 기본 설정, 세션 식별자 또는 추적 세부 정보와 같은 정보가 포함된 텍스트 파일입니다. 예를 들어, 귀하가 온라인 상점을 방문하고 장바구니에 담긴 품목을 기억할 때 이를 달성하기 위해 쿠키를 사용할 가능성이 높습니다.

쿠키는 웹사이트가 세션 전반에 걸쳐 사용자를 "기억" 할 수 있도록 하여 사용자 경험을 향상 시키는 데 필수적입니다. 이들 없이는 방문할 때마다 처음 방문하는 것처럼 느껴져 개인화와 원활한 탐색이 불가능해집니다.


2. 쿠키는 어디에 저장될까요?

쿠키는 사용자 장치, 특히 브라우저의 저장 시스템에 로컬로 저장됩니다. Chrome, Safari 또는 Firefox와 같은 각 브라우저에는 쿠키 관리를 위한 자체 전용 저장 메커니즘이 있습니다.

예를 들어:

Google Chrome에서는 개발자 도구 > Application > Storage > Cookies.에서 쿠키를 볼 수 있습니다.

로컬 시스템에서 쿠키 파일은 일반적으로 브라우저 고유의 디렉터리에 저장됩니다.
이는 텍스트 파일로 저장되며 해당 구성에 따라 이를 생성한 서버 또는 클라이언트 측 JavaScript를 통해 액세스하고 수정할 수 있습니다.


3. 쿠키는 어떤 용도로 사용될까요?

쿠키는 다음을 포함하여 웹사이트에서 여러 가지 주요 목적을 수행합니다.

1) 사용자 세션

쿠키는 고유한 세션 ID로 사용자를 식별하여 세션을 관리합니다. 예를 들어, 귀하가 전자상거래 사이트에 로그인하면 쿠키는 귀하가 사이트를 탐색하는 동안 로그인 상태를 유지하도록 보장합니다.

2) 개인화

쿠키는 언어 설정이나 선호하는 테마와 같은 사용자 기본 설정을 저장합니다. 예를 들어 쿠키는 귀하가 마지막 방문 시 "다크 모드"를 선택했음을 기억할 수 있습니다.

3) 추적

추적 쿠키는 방문한 페이지, 각 페이지에서 보낸 시간 등 사용자 행동을 모니터링하는 데 사용됩니다. 이는 웹사이트가 서비스를 개선하고 광고를 맞춤화하는 데 도움이 됩니다. 예를 들어 운동화를 탐색하는 경우 나중에 여러 웹사이트에서 스포츠 장비에 대한 광고를 볼 수 있습니다.


4. 쿠키의 다른 유형은?

1) 세션 쿠키

브라우저를 닫으면 삭제되는 임시 쿠키입니다.
예: 은행 사이트에서는 세션 쿠키를 사용하여 세션 중에 로그인을 유지하지만 보안을 위해 브라우저를 닫은 후에 로그아웃합니다.

2) 영구 쿠키

이러한 정보는 설정된 만료 기간 동안 기기에 남아 있습니다.
예: 로그인 정보를 기억해 매번 자격 증명을 입력할 필요가 없습니다.

3) 인증 쿠키

로그인한 사용자를 식별하고 페이지 전체에 걸쳐 인증을 유지하는 데 사용됩니다.
예: 소셜 미디어 사이트는 로그인 후 사용자를 인식하기 위해 인증 쿠키를 사용합니다.

4) 추적 쿠키

타겟 광고에 자주 사용되는 웹사이트 전반의 사용자 행동을 모니터링합니다.
예: 쿠키는 관련 광고를 표시하기 위해 여행 웹사이트 방문을 추적할 수 있습니다.

5) 좀비 쿠키

좀비쿠키는 종종 백업 스크립트를 통해 삭제 후 자동으로 다시 생성되는 까다로운 쿠키입니다.

  • 일반 쿠키에서는 쿠키를 삭제하면 브라우저에서 사라집니다.
  • 좀비 쿠키에서는 삭제하더라도 시스템의 예상치 못한 위치에 백업 복사본을 생성하기 때문에 "다시 살아납니다".

이런 일이 발생하는 이유:
좀비 쿠키는 외부 스크립트나 브라우저 쿠키 저장소 외부의 저장 영역을 사용합니다.

예를 들어: 좀비 쿠키는 Adobe Flash 저장소 또는 기타 숨겨진 위치에 자신의 복사본을 저장할 수 있습니다. 해당 사이트를 다시 방문하면 쿠키가 다시 생성됩니다.

오용의 예)
일부 비윤리적인 광고주나 사이버 범죄자는 사용자가 명시적으로 쿠키를 제거하려고 시도하더라도 좀비 쿠키를 사용하여 동의 없이 사용자를 추적합니다.


5. 서드파티 쿠키란?

귀하가 웹사이트를 방문하면 귀하의 기본 설정과 같은 정보를 기억하기 위해 일반적으로 해당 웹사이트에서 쿠키(자사 쿠키라고 함)가 생성됩니다.

그러나 타사 쿠키는 광고 네트워크나 분석 플랫폼과 같이 웹사이트에 삽입된 다른 회사에 의해 생성됩니다. 일반적인 시나리오를 사용해 보겠습니다.

예:
1. 뉴스 웹사이트(예: example-news.com)를 방문합니다.
2. 뉴스 사이트에는 광고 회사(예: adnetwork.com)의 광고가 표시됩니다.
3. 'adnetwork.com'은 귀하를 추적하기 위해 쿠키를 생성합니다.

이제 다른 웹사이트(예: 'shopping-site.com')를 방문하면 동일한 'adnetwork.com' 쿠키가 귀하의 행동을 추적하는 데 사용됩니다. 시간이 지남에 따라 광고주는 귀하의 관심 분야에 대한 프로필을 구축할 수 있습니다.

이것이 중요한 이유:

  • 개인정보 보호 문제: 이 쿠키는 귀하의 명시적인 동의 없이 여러 웹사이트에서 귀하를 추적할 수 있습니다.
  • 브라우저 응답: Safari 및 Firefox와 같은 브라우저는 기본적으로 타사 쿠키를 차단하며 Google Chrome에서는 해당 쿠키 지원을 곧 중단할 계획입니다.

6. 쿠키는 사용자 개인정보 보호에 어떤 영향을 미치나요?

쿠키, 특히 서드파티 쿠키와 추적 쿠키는 심각한 개인정보 보호 문제를 야기할 수 있습니다.

  • 동의 없는 추적: 쿠키는 종종 명시적인 동의 없이 웹사이트 전체에서 사용자를 추적하여 침입적인 프로파일링으로 이어집니다.
  • 데이터 유출: 쿠키에 민감한 정보가 포함되어 있으면 XSS(교차 사이트 스크립팅)와 같은 공격 중에 해커가 쿠키를 악용할 수 있습니다.
  • 제한된 익명성: 영구 추적 쿠키는 온라인에서 사용자 익명성을 감소시킵니다.

이러한 이유로 GDPR 및 CCPA와 같은 규정에서는 웹사이트가 쿠키 사용을 공개하고 사용자 동의를 얻도록 요구합니다.


7. 세션 vs 토큰 vs 쿠키 그리고 JWT?

세션

세션은 사용자별 데이터를 저장하는 서버측 메커니즘입니다.
예: 쿠키의 고유 세션 ID는 서버에 저장된 세션 데이터에 연결됩니다. 세션이 종료되면 데이터가 손실됩니다.

토큰

토큰은 사용자를 인증하는 데 사용되는 문자열과 같은 데이터 조각입니다. 토큰은 일반적으로 상태가 없고 클라이언트 측에 저장되므로 서버와 독립적입니다.

쿠키

쿠키는 세션 ID 또는 토큰 저장을 포함하여 상태를 유지하는 데 사용되는 클라이언트측 저장 메커니즘입니다.

JWT란 무엇입니까?

JWT(JSON Web Token)은 당사자 간에 정보를 안전하게 전송하는 데 사용되는 컴팩트하고 독립적인 토큰 형식입니다.
세 부분으로 구성됩니다.

  • 헤더: 토큰 유형 및 알고리즘과 같은 메타데이터를 포함합니다.
  • 페이로드: 실제 데이터(예: 사용자 ID, 역할)를 보유합니다.
  • 서명: 토큰의 무결성을 보장합니다.

예:
JWT는 다음과 같습니다.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjEyMywiZXhwIjoxNjg2ODgxNjAwfQ.XYZabc123

JWT는 상태 비저장 인증을 위해 최신 웹 앱에서 널리 사용되며 종종 쿠키나 로컬 저장소에 저장됩니다. 그러나 보안을 보장하려면 신중한 구현이 필요합니다.


상태 비저장 인증을 위한 JWT

JWT는 서버에 세션 데이터를 저장할 필요 없이 사용자와 서버 간에 정보를 안전하게 전달하는 방법입니다. 간단히 말해서 "상태 비저장 인증"의 의미는 다음과 같습니다.

  • 상태 비저장: 서버는 요청 간에 사용자에 대한 정보를 저장하지 않습니다. 대신 필요한 모든 데이터가 JWT에 압축되어 매번 서버로 다시 전송됩니다.
  • 쿠키 또는 로컬 저장소에 저장: JWT는 사용자의 브라우저에 저장할 수 있습니다.
    • 쿠키: 요청에 자동 포함을 지원하는 보안 저장 옵션입니다.
    • 로컬 저장소: 브라우저 기반 저장소 메커니즘입니다.

예시:

  1. 웹사이트에 로그인합니다. 서버는 사용자 ID가 포함된 JWT를 생성하여 브라우저로 보냅니다.

  2. JWT는 브라우저에 저장됩니다. 요청(예: 프로필 페이지 방문)을 하면 JWT가 서버로 전송되어 귀하가 누구인지 확인합니다.

  3. 신중한 구현이 필요한 이유:
    JWT가 안전하지 않게 저장된 경우(예: 적절한 예방 조치 없이 로컬 저장소) XSS(교차 사이트 스크립팅)와 같은 기술을 사용하는 공격자에 의해 도난당할 수 있습니다.


참고자료
https://www.cloudflare.com/ko-kr/learning/privacy/what-are-cookies/

profile
당근🥕

0개의 댓글