728x90
웹 개발에서 쿠키(cookie)는 사용자의 브라우저에 저장되는 작은 데이터 조각입니다. 쿠키는 웹 서버가 사용자의 상태를 기억할 수 있도록 도와주는 중요한 메커니즘이며, 예를 들어 로그인 상태 유지, 장바구니 정보 저장, 사용자 선호 설정 등을 위해 사용됩니다.
쿠키(cookie)란?
- 정의: 클라이언트(사용자)의 브라우저에 저장되는 작은 텍스트 파일.
- 형식: key=value 형식이며, 추가적으로 Expires, Max-Age, Path, Domain, Secure, HttpOnly, SameSite 등의 속성을 가질 수 있습니다.
- 주 사용 목적:
- 세션 유지 (로그인 상태 등)
- 사용자 추적 (애널리틱스, 광고)
- 사용자 설정 저장 (언어, 테마 등)
쿠키의 종류
쿠키는 다양한 기준으로 분류할 수 있습니다. 일반적으로는 수명(lifetime)과 접근 범위(scope) 기준으로 나뉩니다.
1. Session Cookie (세션 쿠키)
- 정의: 브라우저 세션 동안만 유지되는 쿠키. 브라우저를 닫으면 자동으로 삭제됨.
- 저장 위치: 메모리 또는 브라우저의 임시 저장소.
- 용도:
- 로그인 세션 유지
- 일시적인 사용자 상태 저장
- Expires 또는 Max-Age 속성 없음: 브라우저가 종료되면 쿠키는 사라짐.
- 보안: 민감한 정보를 저장할 때 자주 사용되며, 서버와의 지속적인 통신이 요구됨.
예시:
Set-Cookie: session_id=abc123; Path=/; HttpOnly
2. Persistent Cookie (영속 쿠키)
- 정의: 명시된 만료 시간(Expires 또는 Max-Age)까지 브라우저에 저장되는 쿠키.
- 브라우저 종료 후에도 유지됨: 지정된 기간 동안 유효.
- 용도:
- 자동 로그인
- 사용자 설정 및 선호도 저장
- 방문자 추적
- 보안: 장시간 유지되므로 민감한 데이터는 저장하지 않는 것이 권장됨.
예시:
Set-Cookie: user_id=12345; Expires=Wed, 30 Apr 2025 23:59:59 GMT; Path=/; Secure
속성 | Session Cookie | Persistent Cookie |
수명 | 브라우저 세션 동안 | 명시된 기간 (Expires/Max-Age) |
저장 위치 | 메모리 또는 임시 저장소 | 디스크에 저장 |
브라우저 종료 시 | 삭제됨 | 유지됨 |
사용 예시 | 로그인 상태 유지 | 자동 로그인, 사용자 설정 |
쿠키의 기본 구조
쿠키의 구조는 기본적으로 key=value 쌍으로 시작하고, 그 뒤에 여러 개의 속성(attributes) 이 붙을 수 있습니다. 이 속성들은 쿠키의 동작 방식(유효기간, 접근 범위, 보안 등)을 정의합니다.
Set-Cookie: key=value; Attribute1=...; Attribute2=...; ...
예시
Set-Cookie: session_id=abc123; Path=/; HttpOnly; Secure; Max-Age=3600; SameSite=Lax
쿠키의 주요 구성 요소
항목 | 설명 |
key=value | 쿠키의 **이름(name)**과 값(value) 쌍입니다. 가장 기본적인 정보입니다. |
Expires | 쿠키의 만료 시점을 명시합니다. (예: Expires=Wed, 30 Apr 2025 23:59:59 GMT) |
Max-Age | 쿠키의 유효 시간(초 단위)을 설정합니다. 이 시간이 지나면 쿠키는 삭제됩니다. (Max-Age=3600 → 1시간) |
Domain | 쿠키를 적용할 도메인 범위를 설정합니다. 기본적으로는 현재 요청한 도메인에만 적용됩니다. |
Path | 쿠키를 전송할 **경로(URI)**를 설정합니다. (Path=/이면 모든 경로에 쿠키가 전송됨) |
Secure | HTTPS 연결에서만 쿠키를 전송합니다. |
HttpOnly | JavaScript를 통해 접근할 수 없도록 설정하여 보안을 강화합니다. |
SameSite | 크로스 사이트 요청에서의 쿠키 전송 방식을 제한합니다. (Lax, Strict, None 중 선택 가능) |
속성 설명
Expires vs Max-Age
- Expires: 절대 시각 (UTC 시간 기준)
- Max-Age: 상대 시간 (현재 시각으로부터 초 단위)
둘 중 하나만 있어도 동작하지만, Max-Age가 우선합니다.
Secure
Set-Cookie: key=value; Secure
- 이 쿠키는 HTTPS 연결일 때만 브라우저가 서버에 전송합니다.
HttpOnly
Set-Cookie: key=value; HttpOnly
- JavaScript의 document.cookie에서 이 쿠키를 읽거나 수정할 수 없습니다.
- XSS 공격을 방지하는 데 유용합니다.
SameSite
Set-Cookie: key=value; SameSite=Lax
- CSRF 방지를 위한 속성.
- 옵션:
- Strict: 완전한 차단 (타 사이트 요청 시 쿠키 미전송)
- Lax: 기본값. 일부 안전한 요청(GET 등)은 허용
- None: 크로스 도메인 요청에서도 쿠키 허용 (단, Secure 속성 필수)
728x90
'정보보호' 카테고리의 다른 글
Replay 공격에 대한 개념 (0) | 2025.05.02 |
---|---|
사용자 인증 SFA 2FA MFA 개념 (0) | 2025.05.01 |
SQL Injection 개념 및 대응 방법 (0) | 2025.04.29 |
Snooping 공격에 대한 개념 (0) | 2025.04.29 |
XSS Cross Site Script 공격 기법에 대한 개념 및 방어 방법 (0) | 2025.04.28 |