728x90
728x90
웹 애플리케이션에서 사용자 정보를 저장하고 관리하기 위한 기술입니다. 둘 다 HTTP의 비상태적 특성을 보완하기 위해 사용되며, 주로 사용자 인증, 상태 유지, 사용자 맞춤 경험 제공 등에 활용됩니다. 하지만 쿠키와 세션은 동작 방식, 저장 위치, 보안 측면에서 차이가 있습니다.
쿠키( Cookie )
정의
- 쿠키는 사용자 브라우저에 저장되는 작은 데이터 조각입니다.
- 서버에서 생성되어 브라우저에 저장되며, 이후 요청마다 서버로 전송됩니다.
특징
- 저장 위치: 사용자의 브라우저(클라이언트 측)에서 저장.
- 데이터 크기: 쿠키는 일반적으로 4KB 이하의 데이터만 저장 가능.
- 수명:
- 세션 쿠키: 브라우저를 닫을 때 삭제됨.
- 영구 쿠키: 만료 날짜를 설정하면 그때까지 유지.
- 전송 방식: HTTP 요청 시마다 자동으로 서버에 포함되어 전송.
장점
- 상태 유지:
- 사용자의 상태(예: 로그인 여부)를 유지하는 데 유용.
- 광범위한 지원:
- 대부분의 브라우저에서 기본적으로 지원.
- 간단한 사용:
- 브라우저와 서버 간 정보 교환이 자동화.
단점
- 보안 문제:
- 브라우저에 저장되므로 조작될 위험이 있음.
- 민감한 데이터는 반드시 암호화해야 함.
- 용량 제한:
- 데이터 크기가 제한적이므로 많은 데이터를 저장하기 어려움.
- 추적 가능성:
- 쿠키를 통해 사용자의 활동이 추적될 수 있음(예: 광고).
세션(Session)
정의
- 세션은 서버에서 관리되는 사용자 데이터의 임시 저장소입니다.
- 브라우저와 서버 간의 상태를 유지하는 데 사용됩니다.
특징
- 저장 위치: 서버 측에 저장.
- 데이터 크기: 서버의 메모리나 데이터베이스를 사용하므로 상대적으로 많은 데이터를 저장 가능.
- 수명:
- 보통 사용자가 브라우저를 닫거나, 서버에서 세션 만료 시간을 설정하면 삭제.
- 식별 방식:
- 세션 ID가 쿠키나 URL에 포함되어 클라이언트-서버 간에 전달됩니다.
장점
- 보안성:
- 민감한 데이터가 서버에 저장되므로 클라이언트 측 조작 가능성이 적음.
- 큰 데이터 관리:
- 서버 자원을 사용하므로 많은 양의 데이터를 관리 가능.
- 사용자 상태 관리:
- 로그인 정보, 장바구니 데이터 등 사용자 상태를 쉽게 유지 가능.
단점
- 서버 부담:
- 다수의 사용자가 접속하면 세션 데이터를 관리하기 위해 서버 리소스가 증가.
- 종속성:
- 클라이언트-서버 간 연결이 끊어지면 세션 정보가 유지되지 않을 수 있음.
쿠키와 세션의 주요 차이점
| 항목 | 쿠키 (Cookie) | 세션(Session) |
| 저장 위치 | 클라이언트(브라우저) | 서버 |
| 보안성 | 낮음 (조작 및 도난 가능) | 높음 (서버에서 관리) |
| 데이터 용량 | 최대 4KB 제한 | 서버 용량에 따라 다름 |
| 수명 | 브라우저 종료 또는 만료 날짜 설정 시 삭제 | 브라우저 종료 또는 세션 만료 시 삭제 |
| 전송 여부 | HTTP 요청 시마다 자동으로 서버로 전송 | 세션 ID만 전송 |
| 속도 | 빠름 (클라이언트에서 처리) | 느림 (서버에서 처리) |
쿠키와 세션의 사용 사례
쿠키를 사용하는 경우
- 사용자 맞춤 환경:
- 다크 모드, 언어 설정 등 브라우저에 저장되는 사용자 설정.
- 자동 로그인:
- 로그인 상태를 유지하기 위해 토큰을 쿠키에 저장.
- 트래킹:
- 웹 분석 도구에서 사용자 행동 추적.
세션을 사용하는 경우
- 사용자 인증:
- 로그인 정보와 같은 민감한 데이터를 관리.
- 전자상거래:
- 장바구니와 같은 상태를 유지.
- 사용자별 데이터 저장:
- 개인화된 데이터를 서버에서 관리.
쿠키와 세션을 함께 사용하는 경우
- 혼합 활용:
- 쿠키는 세션 ID를 저장하는 용도로 사용.
- 세션은 사용자 데이터를 서버에서 안전하게 관리.
예:
- 사용자가 로그인하면 서버는 세션을 생성하고 세션 ID를 쿠키에 저장.
- 이후 요청마다 쿠키에 저장된 세션 ID를 서버로 전송하여 사용자의 인증 상태를 확인.
보안 팁
- 쿠키 보안
- Secure 속성을 사용하여 HTTPS에서만 전송되도록 설정.
- HttpOnly 속성을 추가하여 JavaScript로 접근하지 못하게 설정.
- 데이터 암호화 및 서명 활용.
- 세션 보안
- 세션 시간 제한 설정(예: 30분).
- 세션 탈취 방지를 위해 HTTPS와 CSRF 방어 적용.
- 서버에서 세션 데이터를 정기적으로 삭제(예: 오래된 세션 정리).
쿠키와 세션은 웹 애플리케이션의 핵심적인 데이터 관리 기술로, 애플리케이션 요구사항에 따라 적절히 선택하거나 조합하여 사용할 수 있습니다. 😊
728x90
728x90
'취준 > CS 기술면접 준비' 카테고리의 다른 글
| 로컬 스토리지(Local Storage)와 세션 스토리지(Session Storage) 차이 (0) | 2025.01.05 |
|---|---|
| JWT (JSON Web Token) (0) | 2025.01.05 |
| Virtual DOM 개념 (2) | 2025.01.05 |
| SPA(Single Page Application) (2) | 2025.01.05 |
| CSR (Client-Side Rendering) vs SSR (Server-Side Rendering) (5) | 2025.01.05 |
댓글