쿠키는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각으로, 브라우저가 저장했다가 동일한 서버에 재요청 시 함께 전송하는 방식으로 동작합니다. HTTP 요청을 수신할 때, 서버는 응답과 함께 Set-Cookie 헤더를 전송할 수 있으며, 이후 해당 쿠키는 같은 서버로 보내는 요청의 Cookie 헤더에 포함됩니다.
쿠키는 두 요청이 동일한 브라우저에서 들어왔는지를 판단하는 데 사용됩니다. 주요 목적은 다음과 같습니다.
세션 관리
개인화
트래킹
쿠키는 다양한 활용이 가능하지만, 보안 및 개인정보 보호 측면에서 단점이 있습니다. 정보가 클라이언트 측에 저장되기 때문에 악용될 가능성이 있으며, 보안에 취약할 수 있습니다. 이를 보완하기 위해 Secure 속성을 설정하여 HTTPS에서만 전송되도록 하고, HttpOnly 속성을 추가하여 JavaScript 접근을 차단할 수 있습니다. 또한 SameSite 속성을 이용해 CSRF(사이트 간 요청 위조) 공격을 방지하고, 쿠키 암호화를 통해 중요한 정보를 직접 저장하지 않는 것이 좋습니다.
사용자가 페이지에 접근
서버에서 Set-Cookie 헤더를 포함하여 응답
브라우저가 쿠키를 저장
사용자가 페이지에 다시 접근할 때 저장된 쿠키를 서버로 전송
서버에서 해당 쿠키를 인식하고 처리
쿠키 값이 변경되었다면, 업데이트된 정보로 다시 저장
세션 쿠키 (Session Cookie) : 브라우저 종료 시 삭제되며, 로그인 세션 유지 등에 사용됩니다.
영구 쿠키 (Persistent Cookie) : 만료 날짜(Expires 또는 Max-Age)가 설정되어 일정 기간 동안 유지됩니다. 자동 로그인, 사용자 설정 저장 등에 활용됩니다.
퍼스트파티 쿠키 (First-Party Cookie) : 사용자가 방문한 웹사이트에서 직접 생성한 쿠키로, 로그인 상태 유지 등 사용자 경험 개선에 사용됩니다.
서드파티 쿠키 (Third-Party Cookie) : 광고 업체 등 다른 도메인에서 제공하는 쿠키로, 사용자 추적 및 광고 맞춤화에 사용됩니다. 최근 브라우저 정책에 따라 점점 차단되고 있습니다. (예: Chrome의 서드파티 쿠키 차단 정책)
웹 쿠키는 사용자 경험을 향상시키고 맞춤형 서비스를 제공하는 데 중요한 역할을 하지만, 보안 및 개인정보 보호 측면에서 취약할 수 있습니다. 따라서 적절한 설정이 필요하며, 경우에 따라 쿠키가 아닌 LocalStorage나 SessionStorage와 같은 대체 저장 방식을 활용하여 보안을 강화하는 것이 좋습니다. 웹 개발 시 쿠키의 활용과 보안 설정을 고려하여 안전하고 효율적인 환경을 구축하는 것이 중요합니다.