티스토리 뷰
728x90
1. 쿠키란 무엇인가?
쿠키(Cookie)는 웹 브라우저에 저장되는 작은 데이터 조각입니다. 서버는 사용자의 브라우저에 데이터를 저장하고, 브라우저는 이후 요청 시 이 데이터를 서버로 다시 전송합니다.
쿠키의 특징
- 클라이언트 측 저장: 쿠키는 클라이언트(브라우저)에 저장됩니다.
- 작은 데이터 크기: 일반적으로 쿠키의 크기는 4KB로 제한됩니다.
- 유효 기간: 쿠키는 만료 시간을 설정할 수 있습니다. 만료 기간이 지나면 브라우저에서 자동으로 삭제됩니다.
- 보안: 쿠키는 텍스트로 저장되므로, 민감한 정보를 저장할 때는 암호화가 필요합니다.
쿠키의 사용 사례
- 사용자 로그인 유지: 사용자가 로그인한 상태를 유지하기 위해 세션 ID나 인증 토큰을 저장합니다.
- 사용자 설정 저장: 언어 설정, 테마 선택 등 사용자의 환경 설정을 유지합니다.
- 웹 트래킹: 방문자의 행동을 추적하여 맞춤 광고를 제공하거나 분석 데이터를 수집합니다.
쿠키의 단점
- 보안 취약점(세션 하이재킹, 크로스 사이트 스크립팅(XSS))
- 브라우저에 과도한 저장 데이터가 있을 경우 성능 저하
2. 세션이란 무엇인가?
세션(Session)은 사용자의 상태를 서버 측에서 관리하는 기술입니다. 사용자가 웹 서버에 연결된 동안 고유한 세션 ID를 통해 데이터를 유지합니다.
세션의 특징
- 서버 측 저장: 세션 데이터는 서버에 저장되며, 브라우저에는 세션 ID만 전달됩니다.
- 유효 기간: 기본적으로 세션은 브라우저를 닫으면 만료되지만, 서버에서 설정을 통해 기간을 연장할 수 있습니다.
- 보안: 데이터가 서버에 저장되므로, 클라이언트 측에 저장된 쿠키보다 보안성이 높습니다.
세션의 사용 사례
- 로그인 상태 관리: 사용자가 로그인한 상태를 서버 측에서 유지합니다.
- 쇼핑 카트: 사용자가 선택한 상품 정보를 저장합니다.
- 사용자 활동 추적: 사용자가 한 번의 세션 동안 수행한 작업을 기록합니다.
세션의 단점
- 서버 메모리를 사용하므로 많은 사용자를 처리할 때 부하가 증가할 수 있습니다.
- 분산 서버 환경에서는 세션 데이터를 공유하기 위한 별도 설정(예: Redis, Memcached)이 필요합니다.
3. 쿠키와 세션의 차이점
구분쿠키세션
저장 위치 | 클라이언트(브라우저) | 서버 |
보안성 | 낮음 (데이터 암호화 필요) | 높음 (서버에 저장되므로 더 안전) |
데이터 크기 | 최대 4KB 제한 | 서버 메모리/스토리지 제한에 따름 |
유효 기간 | 만료 시간 설정 가능 | 기본적으로 브라우저가 닫히면 만료 |
속도 | 빠름 (클라이언트에서 처리) | 상대적으로 느림 (서버 요청 필요) |
사용 사례 | 사용자 설정 저장, 광고 추적 | 로그인 상태 유지, 쇼핑 카트 관리 |
4. 쿠키와 세션의 조합 사용
쿠키와 세션은 서로 배타적인 관계가 아니라, 함께 사용하는 경우가 많습니다. 예를 들어:
- 쿠키로 세션 ID 저장: 클라이언트는 서버가 발급한 세션 ID를 쿠키로 저장하고, 서버는 이 ID를 사용해 세션 데이터를 조회합니다.
- 세션 기반 로그인: 사용자가 로그인하면 세션에 사용자 정보를 저장하고, 브라우저는 세션 ID를 쿠키로 저장해 인증 상태를 유지합니다.
5. 보안 고려사항
- 쿠키
- HTTPS를 사용하여 전송 시 데이터를 암호화합니다.
- HttpOnly와 Secure 속성을 설정하여 보안을 강화합니다.
- 세션
- 세션 고정(Session Fixation) 공격을 방지하기 위해 세션 ID를 주기적으로 갱신합니다.
- 민감한 데이터를 저장할 때는 서버 측 암호화를 사용합니다.
728x90
'👩🏻💻개발공부 > 데이터베이스' 카테고리의 다른 글
1-2. 데이터베이스 구조 (4) | 2024.10.09 |
---|---|
1-1. 데이터베이스 시스템 개념 정리 (6) | 2024.09.29 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 공룡책
- 개발일지
- 스페인 교환학생
- 프로젝트
- 스페인
- 리눅스
- 교환학생
- JS
- 혼공단 SQL
- nodejs
- 운영체제
- googleapis
- 백준
- Signal
- AWS
- Linux
- 혼공학습단
- 자바스크립트
- JavaScript
- 해커톤
- 혼공단 9기
- 백엔드 개발
- C++
- 혼공단
- 혼공
- Process
- 깃 예제
- MySQL
- SQL
- 개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함