Computer Science/Network

HTTP 쿠키의 모든 것을 파헤쳐보자

2mukee 2023. 12. 28. 17:17
320x100
320x100

HTTP 쿠키

: 서버가 특정 목적을 위해 브라우저 측에 저장하는 데이터

: "이름=값" 형태의 단순한 문자열 데이터로 HTTP 패킷의 헤더 영역을 통해 송수신

 

 

 

 

HTTP 쿠키의 메커니즘

: 서버에서 Set-Cookie 라는 응답헤더를 통해 브라우저가 수신해야할 쿠키 정보를 명시

: Set-Cookie에는 하나의 쿠키만 담을 수 있음 ("이름=값")

: 서버로 부터 응답을 받은 브라우저는 쿠키를 클라이언트의 컴퓨터 하드디스크에 저장하고 동일한 서버에 요청 시 저장한 쿠키를 Cooke라는 요청 헤더에 담아서 보냄 (헤더에는 ; 으로 여러 쿠키를 구분)

 

 

 

 

 

쿠키의 유효기간

: 브라우저가 쿠키를 헤더에 넣고 요청할 수 있는 기간은 서버에서 쿠키를 보낼때 결정

 

- 세션 쿠키

: 유효 기간이 별도로 명시되지 않은 쿠키

: 브라우저의 세션이 종료되었을때 함께 만료됨

: 브라우저의 탭이나 윈도우를 닫았을때 쿠키가 만료되며, 브라우저는 더이상 해당 쿠키를 서버로 보내지 않음

 

- 영속 쿠키

: 유효기간이 명시된 쿠키

: Set-Cooke의 Expires 혹은 Max-Age (초단위) 속성을 지정. 두 속성이 함께 있을 경우 Max-Age 속성이 우선

: 브라우저에 저장된 쿠키를 즉시 만료하려면 서버에서 Set-Cookie의 Max-Age를 0으로 지정하면 됨

 

 

 

 

 

쿠키의 적용 범위

: Set-Cookie의 Domain 속성을  통해 서브 도메인까지 포함되도록 범위를 확장할 수 있음

: Path 속성을 통해서 해당 도메인의 특정 경로로 상세하게 범위를 설정할 수 있음

 

 

 

 

 

쿠키의  필요성과 한계

- 필요성

: 클라이언트에 필요한 정보를 서버에 저장하지 않고 클라이언트에 저장함으로써 부담을 전가

 

- 한계

: 브라우저의 삭제 기능이나 폴더의 삭제를 통해 유실되기 쉽다

: 브라우저의 개발자 도구를  통해 어떤 쿠키가 존재하는지 확인할 수 있으며 이는 손쉽게 변경할 수 있다

: 클라이언트에 저장되기 때문에 해커에게 탈취되기 쉽다

 

 

 

 

 

쿠키의 대체 기술

: 웹 스토리지 (로컬 스토리지 / 세션 스토리지)를 통해 쿠키보다 안전하게 클라이언트에 데이터를 저장할 수 있다

: 웹 스토리지는 같은 브라우저 끼리만 공유 가능

 

- 로컬 스토리지

: 웹 페이지의 세션이 끝나도 남아있음 (탭과 창 간에 데이터를 공유할 수 있음)

 

- 세션 스토리지

: 웹 페이지의 세션이 끝날때 데이터가 삭제됨 (탭이나 창이 닫힐때 삭제)

 

 

 

 

 

쿠키의 보안 속성

- Secure

: 브라우저가 https 프로토콜 상에서만 쿠키를 보내도록 설정

 

- httpOnly

: 자바스크립트의 Document.cookie 객체를 통해 접근할 수 없도록하여 서드파티 코드가 쿠키에 접근하는 것을 방지

 

 

 

 

쿠키의 활용

: 서버에 세션을 저장하고 쿠키에는 세션을 구분할 수 있는 세션의 ID를 저장

: 클라이언트로부터 요청이 올때마다 서버는 쿠키의 세션 ID를 통해 어떤 사용자인지 등을 구분

: 이렇게하면 민감한 정보는 서버에 세션으로 저장되므로 보안을 유지할 수 있다

 

 

 

 

 

 

 

 

Reference

 

쿠키 1부: HTTP로 설명하는 쿠키(cookie)

Engineering Blog by Dale Seo

www.daleseo.com

 

쿠키 2부: 세션은 쿠키가 필요해~

Engineering Blog by Dale Seo

www.daleseo.com

 

[자바스크립트] 웹 스토리지 (localStorage, sessionStorage) 사용법

Engineering Blog by Dale Seo

www.daleseo.com

 

300x250
728x90