사용자의 브라우저에 저장되는 작은 데이터 조각으로 필요할 때 쉽게 데이터를 받아 사용 가능하다.
만료 기간이 정해져 있지 않은 쿠키인 세션 쿠키
(Session cookie)와 만료 기간이 존재하는 영구 쿠키
(persistent cookie)가 있다.
(위 사진에서 theme 세션이 세션 쿠키, refresh_token이 영구 쿠키에 해당한다.)
세션 쿠키는 브라우저가 종료될 때 함께 사라지는 반면, 영구 쿠키는 만료기간이 끝나면 삭제된다.
동작
1️⃣ 클라이언트가 서버에 웹 페이지를 요청하면 서버는 요청에 대한 응답과 함께 쿠키정보를 전송한다.
2️⃣ 응답을 받은 클라이언트는 메시지 안에 있던 쿠키 정보를 브라우저 공간에 저장한다.
3️⃣ 이후부터 클라이언트에서 서버로 보내는 모든 요청에 쿠키 정보를 담아 전달한다.
4️⃣ 서버는 이러한 요청 메시지의 쿠키 정보를 확인해 사용자를 식별하거나 적절한 데이터를 보내준다.
단점
- 누구나 쉽게 접근이 가능하고 조작할 수 있기 때문에 탈취되거나 변조될 위험이 크다.
- 요청마다 메시지에 쿠키 정보가 함께 전송되기 때문에 오가는 데이터의 양도 더 커져 웹 통신의 성능이 떨어지는 원인이 될 수 있다.
- 사용자가 방문한 웹 사이트에서 직접 발행하는 퍼스트 파티 쿠키
와 제삼자가 발행한 서드 파티 쿠키
로 구분할 수 있다.
- 서드파티 쿠키
는 사용자로부터 충분한 동의를 받지 않고 웹 브라우징 활동을 추적해 표적 광고에 이용하기 때문에 개인 정보 침해의 소지가 있다.
- 개인 정보와 같은 민감한 데이터보다는 팝업 다시 보지 않기, 다크 모드 여부 등의 용도로 쿠키를 사용할 수 있다.
쿠키 | 웹 스토리지 |
---|---|
4KB까지 저장이 가능하다. | 5MB ~ 10MB까지 저장이 가능하다. |
클라이언트와 서버 양쪽 모두 값에 접근 가능하다. | 클라이언트 단에서만 접근 가능하다. |
HTTP 헤더에 담겨 서버로 전송된다. | 따로 서버 전송을 하지 않기 때문에 네트워크 통신량이 줄어든다. |