2025-09-06 01:08
Tags: 소프트웨어 공학
쿠키
-
클라이언트의 웹 브라우저에 전송하는 작은 데이터 조각으로, HTTP의 비상태성(Stateless) 문제를 해결하기 위해 만들어졌습니다.
-
로그인 정보 유지, 장바구니, 개인화 설정 등 사용자 경험을 향상시키지만, 제3자 쿠키는 사용자 추적 및 광고에 활용되어 개인정보 보호 문제를 야기
-
최근 브라우저들은 개인정보 보호를 강화하기 위해 제3자 쿠키 지원을 중단하고 있으며, 웹은 쿠키 없는(Cookieless) 시대로 전환.
-
서버는 클라이언트의 이전 요청을 전혀 기억하지 못하는 비상태성 → 매번 로그인하면 장바구니 사라지고 인증 정보도 매번 다시 인증해야함
-
이런 불편함을 해결하기 위해 서버가 사용자 식별하고 이전 상태 기억하게 해주는 이름표, 또는 멤버십 카드
속성 (Attribute) | 설명 | 예시 |
---|---|---|
Name | 쿠키의 이름입니다. | userID |
Value | 쿠키에 저장되는 값입니다. 이 값을 통해 서버는 사용자를 식별합니다. | user1234 |
Expires/Max-Age | 쿠키의 만료 날짜 또는 최대 수명을 지정합니다. 이 시간이 지나면 쿠키는 자동으로 삭제됩니다. 지정하지 않으면 브라우저 종료 시 삭제되는 ‘세션 쿠키’가 됩니다. | Expires=Sat, 07-Sep-2024 15:00:00 GMT |
Domain | 쿠키가 전송될 서버의 도메인을 지정합니다. 지정된 도메인과 그 하위 도메인으로 요청할 때만 쿠키가 전송됩니다. | .example.com |
Path | 쿠키가 전송될 도메인 내의 특정 경로를 지정합니다. 이 경로와 그 하위 경로에서만 쿠키가 활성화됩니다. | /cart |
Secure | 이 속성이 설정되면, 쿠키는 반드시 HTTPS 프로토콜(암호화된 연결)을 통해서만 전송됩니다. | Secure |
HttpOnly | 이 속성이 설정되면, 자바스크립트의 document.cookie API로 쿠키에 접근할 수 없습니다. XSS(Cross-Site Scripting) 공격을 통해 쿠키를 탈취하는 것을 방지하는 데 도움이 됩니다. | HttpOnly |
SameSite | 다른 도메인에서 요청이 발생할 때 쿠키 전송 여부를 결정하는 중요한 보안 속성입니다. CSRF(Cross-Site Request Forgery) 공격을 방어하는 데 효과적입니다. (Strict, Lax, None) | SameSite=Strict |
- 최초 방문 및 쿠키 발급: 사용자가 웹사이트에 처음 방문하면, 브라우저는 서버에 페이지를 요청합니다.
- 서버의 응답과
Set-Cookie
: 서버는 요청에 대한 응답을 보내면서, HTTP 응답 헤더(HTTP Response Header)에Set-Cookie
라는 필드를 포함시켜 쿠키를 생성하라고 브라우저에 명령합니다. (예:Set-Cookie: userID=user1234
) - 브라우저의 쿠키 저장: 브라우저는 서버로부터 받은 쿠키를 기기의 지정된 공간에 저장합니다.
- 재방문 및 쿠키 전송: 사용자가 동일한 웹사이트를 다시 방문하면, 브라우저는 HTTP 요청 헤더(HTTP Request Header)에
Cookie
필드를 포함시켜 저장해 두었던 쿠키를 서버로 다시 전송합니다. (예:Cookie: userID=user1234
) - 서버의 사용자 식별: 서버는 브라우저가 보낸 쿠키를 읽고 “아, user1234님이 다시 오셨군요!”라며 사용자를 식별합니다. 이를 통해 로그인 상태를 유지하거나, 장바구니에 담아둔 상품을 보여주거나, 사용자가 설정한 언어 환경을 제공하는 등 개인화된 서비스를 제공할 수 있습니다.