Cookies

Cookies HTTP 쿠키는 웹 서버가 사용자의 브라우저에 저장하는 작은 텍스트 데이터로, 사용자 세션 관리와 개인화된 경험 제공을 위해 설계되었다. HTTP의 무상태(Stateless) 특성을 보완하여 연속적인 요청 간 상태 유지가 가능하게 한다. 정의 및 목적 데이터 저장 형식: 키=값 쌍으로 구성된 텍스트 파일. 동작 원리: 서버 → Set-Cookie 헤더로 브라우저에 전송. 브라우저 → 이후 요청 시 Cookie 헤더에 포함. 1 2 3 4 5 6 7 // 서버 응답 예시 HTTP/2.0 200 OK Set-Cookie: session_id=abc123; Secure; HttpOnly // 클라이언트 요청 예시 GET /dashboard HTTP/2.0 Cookie: session_id=abc123 주요 용도 용도 설명 예시 세션 관리 로그인 상태, 장바구니 정보 유지 온라인 쇼핑몰 결제 과정 개인화 언어 설정, 테마 저장 다크 모드 자동 적용 트래킹 사용자 행동 분석 및 광고 타겟팅 구글 애널리틱스 세션 관리: 1 2 3 4 5 6 7 8 9 10 // 로그인 세션 관리 app.post('/login', (req, res) => { // 사용자 인증 후 const sessionId = generateSessionId(); res.cookie('sessionId', sessionId, { httpOnly: true, secure: true, maxAge: 24 * 60 * 60 * 1000 // 24시간 }); }); 개인화: 1 2 3 4 // 사용자 선호도 저장 function saveUserPreference(theme) { document.cookie = `theme=${theme}; max-age=31536000; path=/`; } 트래킹: 1 2 3 4 5 6 // 방문자 추적 function trackPageVisit() { let visits = getCookie('visitCount') || 0; visits++; document.cookie = `visitCount=${visits}; max-age=31536000`; } 쿠키의 구성 요소 이름=값: 쿠키는 기본적으로 이름과 값의 쌍으로 이루어진 문자열. 만료 날짜(Expires) 또는 최대 수명(Max-Age): 쿠키의 유효 기간을 지정하며, 이 기간이 지나면 브라우저는 해당 쿠키를 삭제한다. 도메인(Domain)과 경로(Path): 쿠키가 적용될 도메인과 경로를 지정하여 특정 범위에서만 쿠키를 전송하도록 제한할 수 있다. 보안 속성: Secure 속성을 설정하면 쿠키는 HTTPS 연결에서만 전송되며, HttpOnly 속성을 설정하면 JavaScript와 같은 클라이언트 측 스크립트에서 쿠키에 접근할 수 없다. 주요 속성 속성 설명 예시 Name 쿠키의 이름 sessionId Value 쿠키의 값 abc123xyz Domain 쿠키가 유효한 도메인 .example.com Path 쿠키가 유효한 경로 / Expires/Max-Age 쿠키 만료 시간 Wed, 21 Oct 2024 Secure HTTPS에서만 전송 Secure HttpOnly JS에서 접근 불가 HttpOnly SameSite CSRF 방지 설정 Strict, Lax, None Name과 Value: 1 2 // 쿠키의 기본 구성 document.cookie = "username=John Doe"; // 이름=값 형태 Expires/Max-Age: 1 2 3 4 // 만료 시간 설정 document.cookie = "username=John Doe; expires=Thu, 18 Dec 2025 12:00:00 UTC"; // 또는 Max-Age 사용 document.cookie = "username=John Doe; max-age=3600"; // 1시간 후 만료 Domain과 Path: 1 2 // 특정 도메인과 경로에서만 사용 가능한 쿠키 document.cookie = "user=John; domain=example.com; path=/blog"; Secure와 HttpOnly: 1 2 3 4 // 보안 관련 설정 // Secure: HTTPS에서만 전송 // HttpOnly: JavaScript에서 접근 불가 response.setHeader('Set-Cookie', 'sessionId=abc123; Secure; HttpOnly'); 주요 유형별 특징 기본 분류 유형 저장 위치 수명 사용 사례 세션 쿠키 브라우저 메모리 브라우저 종료 시 삭제 로그인 세션 지속형 쿠키 디스크 Expires/Max-Age 지정 자동 로그인 서드파티 쿠키 타 도메인 설정 장기적 크로스 사이트 광고 트래킹 특수 쿠키 (보안 리스크) 슈퍼쿠키: 일반 삭제로 제거 불가능 플래시 쿠키: Adobe Flash 기반, 브라우저 외부 저장 좀비 쿠키: 삭제 후 자동 재생성 쿠키 작동 방식 쿠키 설정 과정 클라이언트가 웹사이트 방문 서버가 Set-Cookie 헤더로 쿠키 전송 브라우저가 쿠키 저장 이후 요청시 자동으로 쿠키 전송 쿠키 전송 과정 브라우저가 HTTP 요청 준비 유효한 쿠키 확인 Cookie 헤더에 쿠키 포함 서버로 요청 전송 쿠키 관리 및 보안 HTTP 쿠키의 보안 속성은 XSS(교차 사이트 스크립팅), CSRF(교차 사이트 요청 위조) 등 웹 공격을 방어하고 사용자 데이터를 보호하기 위해 설계되었다. ...

October 18, 2024 · 6 min · Me