HTTP 쿠키는 서버가 HTTP header를 통해 웹브라우저에 전송하는 작은 데이터 조각이다.
Stateless한 HTTP 에서 상태 정보를 기억시켜 웹브라우저 식별을 가능하게 해준다.
쿠기의 주요 사용 목적
1. 세션 관리 : 서버에 저장해야 할 로그인, 장바구니, 게임 스코어 등의 정보 관리
2. 개인화 : 사용자 선호, 테마 등의 세팅
3. 트래킹 : 사용자 행동을 기록하고 분석하는 용도
지금은 Modern Apis의 종류인 Web Storage API (localStorage, sessionStorage)와 IndexedDB API를 사용한다.
더보기
sessionStorage
- 세션에 한정해, 즉 브라우저 또는 탭이 닫힐 때까지만 데이터를 저장
- 데이터를 절대 서버로 전송하지 않음
- 저장 공간이 쿠키보다 큼(최대 5MB)
localStorage
- sessionStorage와 같지만 브라우저를 닫아도 데이터가 저장됨
- JavaScript를 사용하거나 브라우저 캐시 또는 로컬 저장 데이터를 지워야 사라짐
- 저장 공간이 셋 중 가장 큼
IndexedDB API
- 많은 양의 구조화된 데이터 저장에 적합함
- RDBMS와 같이 Transaction을 사용하지만 고정컬럼 테이블 대신 index 키를 사용해 저장 및 검색
- 구조화된 복사 알고리즘을 지원하는 객체라면 모두 저장할 수 있음
쿠키의 유효 기간
- session cookie : 유효기간이 별도로 명시되지 않음, 브라우저/탭 종료시 만료
- permanent cookie : Expires=종료시점 또는 Max-age=유효기간
쿠키의 적용 범위
- Domain=... : 서브 도메인까지 포함
- Path=... : 해당 도메인의 특정 경로로 범위 축소
쿠키의 보안
- Secure : 브라우저가 https 프로토콜 상에서만 서버로 전송
- HttpOnly : JavaScript 코드가 쿠키에 접근하는 것을 제한
- SameSite : Cross Site 전송 요청을 제한, Strict(전송 X)>Lax(예외 요청에는 전송)>None(이건 왜 있는 건지..)
Third-party Cookie
- 접속한 도메인과 다른 도메인의 쿠키
- 광고와 트래킹에 주로 사용됨 구글이 사용하는 쿠키 타입
* 좀비쿠키, Evercookies : Web Storage API, Flash 로컬 공유 객체 등의 기술을 써서 재생성
참고자료