1970년대 유닉스(UNIX) 시스템에서 “매직 쿠키(Magic Cookie)”라는 표현이 사용되었는데, 이는 프로세스 간 교환되는 작은 데이터 조각을 뜻했습니다.
이때 “쿠키”라는 단어를 쓴 이유는, 작고 간단하지만 중요한 정보가 들어있는 ‘과자 조각(cookie)’이라는 은유 때문이었습니다.
기존 컴퓨터 과학에서 쓰던 “매직 쿠키” 개념을 차용해 브라우저와 서버가 주고받는 작은 데이터에 “쿠키”라는 이름을 붙였습니다.
쿠키는 서버가 클라이언트(브라우저)에 보내는 데이터 조각이다. HTTP는 무상태성(stateless)을 가진다. 무상태성 때문에 웹 사이트에서 로그인을 했지만 자격 증명이 정상적으로 이루어졌는지 증거가 존재하지 않는다. 그래서, 서버는 통신과정에서 무상태성을 극복하기 위해 쿠키를 사용한다. 서버는 로그인이 성공했다면 세션에 해당 유저의 정보를 저장한다.
해당 사용자가 인증된 유저임을 알리기 위해 서버는 세션 ID를 쿠키에 담아 클라이언트에게 보낸다. 클라이언트는 사이트의 다른 기능을 사용할 때 HTTP 요청에 쿠키를 같이 보내어 ‘나는 로그인 된 사용자이며 이 세션 ID에 내 정보가 담겨있다’를 알린다.
다시 말해 쿠키는 사용자(클라이언트)를 식별하기 위해 서버에서 보내는 작은 데이터 조각이다.
쿠키는 브라우저의 파일에 저장된다. 윈도우 환경에서 크롬 브라우저 쿠키가 실제 저장되는 공간을 캡쳐했다. Cookies 파일안에 우리가 서버로부터 받은 쿠키를 저장한다.

쿠키는 세가지 형태로 사용된다. 추적은 서드 파티 쿠키 , 인증, 개인화는 퍼스트 파티 쿠키를 사용한다.
서버는 HTTP 응답의 ‘Set-Cookie’ 헤더를 통해 쿠키를 브라우저에게 저장하도록 지시할 수 있다. 쿠키의 속성을 통해 쿠키를 사용할 기간과 어떤 도메인에서 사용할지 결정할 수 있다.
서버는 브라우저에 쿠키를 영구히 저장하게 할 수 있다. 하지만, 브라우저 정책에 따라 실제 저장하는 기간은 달라진다. 크롬은 최대 400일을 사파리는 최대 7일의 쿠기를 저장할 수 있다. 또한, 사용자가 직접 브라우저의 쿠키를 지울 수도 있다. (크롬은 1년에 한 번 정도 방문하는 사이트(예: 연간 수도/전기 사용량 보고 사이트)를 정상작동 하기 위해 400일의 시간을 둔다고 한다.)
서드 파티 쿠키는 사용자가 방문한 웹 사이트 이외의 웹사이트(광고 배너)에서 발행한 쿠키이다. 주로 광고 목적으로 사용된다. 서드 파티 쿠키를 사용하기 위해 법률적으로 규제화 되어 사용자의 동의를 맡는 경우도 있다. (해외 사이트의 쿠키 동의)
퍼스트 파티 쿠키는 사용자가 방문한 웹 사이트에서 발행한 쿠키이다. 사용자 인증을 위해 주로 사용한다. 브라우저에서 HTTP 요청을 하면 도메인을 만족하는 쿠키를 서버에 같이 전송한다.
클라이언트가 Cross Orgin로 자원을 요청을하는 경우 쿠키 전송을 제한할 수 있다. SameSite 속성은 CSRF를 방지하기 위한 장치이다.

SameSite 속성에는 세 가지 옵션이 있다.
Lax (기본값)
Strict
None
현실적으로 Lax를 많이 사용한다. Lax는 CSRF를 부분적으로 방어하며. CSRF 토큰을 사용하여 보완할 수 있다.
<iframe src="https://ads.com/banner"> 같은 외부 리소스 포함쿠키의 송신 조건을 만족하는 모든 HTTP 요청에 쿠키가 함께 전송된다. 웹사이트는 쿠키를 복수개 발행할 수 있다. 이로 인해 동일한 데이터가 반복적으로 전송되며, 추가적인 대역폭 소비가 발생한다. 쿠키의 path 속성을 통해 쿠키의 사용 범위를 최소화해 보안 효과와 네트워크 비용을 절감할 수 있다.