Skip to content

Commit

Permalink
Merge pull request #59 from minhoo03/gh-pages
Browse files Browse the repository at this point in the history
Update 2024-05-29-Token.md
  • Loading branch information
minhoo03 authored Jun 2, 2024
2 parents 1821b97 + 0940764 commit 80fa30d
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions _posts/2024-05-29-Token.md
Original file line number Diff line number Diff line change
Expand Up @@ -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를 방문할 때 신발 광고를 보여주는 데 활용된다. 이러한 트래킹 데이터는 사용자 경험을 개인화하고 광고 효율성을 높이는 데 사용된다.

<!-- 트래킹 쿠키: 보충 설명 필요 -->

### 쿠키의 종류

<!-- 세션 쿠키, 지속 쿠키 -->

### 쿠키의 단점

<!-- 보안, 용량 -->

<!--
클라이언트 인증이란?
Expand Down

0 comments on commit 80fa30d

Please sign in to comment.