diff --git a/_posts/2024-05-29-Token.md b/_posts/2024-05-29-Token.md index 3fa8f321087f..f42f55752cbd 100644 --- a/_posts/2024-05-29-Token.md +++ b/_posts/2024-05-29-Token.md @@ -21,6 +21,56 @@ published: true 서버가 클라이언트 인증을 확인하는 방식은 대표적으로 쿠키, 세션, 토큰 3가지 방식이 있다. +### 쿠키(Cookie) + +> 웹 브라우저가 웹 서버와 상호 작용할 때 주고받는 작은 데이터 조각으로, **Key-Value** 형식의 문자열 덩어리다. + +클라이언트가 특정 웹사이트를 방문하면, 그 사이트의 서버가 클라이언트의 브라우저에 쿠키를 설치한다. 이 쿠키는 클라이언트 측에 저장되어 이후에 같은 사이트를 방문할 때 다시 서버로 전송되어 **고유 정보 식별**을 할 수 있다. + +### 구조 + +위에서 말했듯, 쿠키는 Key-Value 쌍으로 구성된다. 예를 들어, 'userId=12345'와 같은 형태이다. + +또한 쿠키는 다양한 속성이 포함될 수 있다. 주요 속성은 다음과 같다: +* **Name**: 쿠키의 이름 +* **Value**: 쿠키에 저장된 값 +* **Domain**: 쿠키가 유효한 도메인 +* **Path**: 쿠키가 유효한 URL 경로 +* **Expires** 또는 Max-Age: 쿠키의 유효 기간 +* **Secure**: HTTPS 연결에서만 전송됨 +* **HttpOnly**: JavaScript로 접근할 수 없도록 설정 + +### 동작 원리 + +클라이언트가 웹사이트에 처음 방문하면, 서버는 응답 헤더에 'Set-Cookie' 명령을 포함하여 쿠키를 전송한다. 이때 서버는 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 Set-Cookie에 담는다. 브라우저는 쿠키를 로컬 저장소에 저장힌다. + +이후 클라이언트가 요청을 보낼 때마다, 웹 브라우저는 저장된 쿠키를 요청 헤더의 'Cookie' 필드에 포함시켜 서버로 전송한다. 서버는 쿠키에 담긴 정보를 바탕으로 해당 요청을 보낸 클라이언트를 식별하고, 로그인 상태 유지, 사용자 맞춤 설정 적용 등 필요한 기능을 제공한다. 예를 들어, 특정 팝업을 사용자에게 맞춤형으로 표시할 수 있다. + +서버는 필요에 따라 쿠키의 값을 갱신하거나 삭제할 수 있다. 브라우저는 쿠키의 유효 기간이 만료되면 자동으로 쿠키를 삭제한다. + +### 쿠키의 활용 + +아래는 예시. + +1. 세션 관리 +* **로그인 상태 유지**: 사용자가 로그인을 하면 세션 ID를 쿠키에 저장하여 재방문 시 로그인 상태 유지 가능 + +2. 개인화 +* **사용자 맞춤 설정**: 사용자 선호도나 설정을 저장하여 개인 맞춤형 서비스 제공 가능 (ex. 7일간 보지 않기) + +3. 트래킹 및 분석 +* **트래킹**: 사용자의 행동을 기록하고 분석하는 용도로 사용된다. 트래킹 쿠키는 방문한 사이트가 아닌 다른 도메인으로도 데이터를 전송할 수 있다. 예를 들어, 광고 네트워크는 사용자가 특정 웹사이트에서 본 상품을 추적하여 관련 광고를 다른 웹사이트에서도 표시할 수 있다. 사용자가 웹사이트 A에서 신발을 본 경우, 해당 정보는 쿠키를 통해 저장되어 사용자가 웹사이트 B를 방문할 때 신발 광고를 보여주는 데 활용된다. 이러한 트래킹 데이터는 사용자 경험을 개인화하고 광고 효율성을 높이는 데 사용된다. + + + +### 쿠키의 종류 + + + +### 쿠키의 단점 + + +