[Web] Cookie와 Session개발/이론2023. 4. 18. 17:34
Table of Contents
쿠키와 세션이 무엇인가?
쿠키와 세션은 비연결성과 무상태라는 특징을 가진 HTTP 프로토콜에서 상태를 유지하기 위해 사용되는 개념이다.
쿠키
특징
- 브라우저에 정보를 저장하기 때문에 서버의 리소스 사용량을 줄일 수 있다.
- 브라우저에 저장되기 때문에 다른 사람이 볼 수도 있고, 조작이 가능하기 때문에 보안에 취약하다는 점과 사용자가 쿠키를 차단해버리면 서버 측에서는 쿠키 기반 상태 유지가 불가능하다는 단점이 있다.
- 요청을 보낼 때마다 Request Header에 자동으로 포함되기 때문에 크기가 큰 쿠키를 많이 만들면 트래픽의 크키가 커지고, 리소스가 낭비될 수 있다.
- 텍스트 형태의 상태 정보만 저장할 수 있으며, 데이터의 개수와 크기에 제한이 있다. (최대 300개, 도메인 하나 당 최대 20개, 4KB)
- 쿠키를 사용할 도메인과 경로, 유효 시간 등을 설정할 수 있고, http only와 같은 옵션을 통해 조작할 수 없게 설정할 수 있다.
쿠키 사용 예시
- 자동 로그인, 하루 동안 보지않기, 다크모드, 언어 설정, 맞춤 광고 등 설정 정보 유지
- 장바구니, 최근 검색 리스트 등 사용자의 행동 정보 기록
세션
특징
- 서버에 저장하여 서버 메모리를 소모하는 단점과 서버 메모리 용량이 크면 쿠키보다 많은 저장 공간을 사용할 수 있다는 장점이 있다.
- 서버에 저장되기 때문에 쿠키보다 안전하다.
- 서버에 저장되기 때문에 각 브라우저를 구분할 수 있어야하며, 이를 위해 각 브라우저 마다 1개의 고유한 세션 객체를 유지할 수 있다.
- 사용자의 세션은 Session ID를 브라우저에 쿠키로 저장해두고, Session ID를 통해 구분한다.
- 자주 조회되는 데이터를 세션에 담아두고 캐시처럼 사용해서 성능을 향상시킬 수 있다.
- 세션의 만료 시간을 설정해두고 일정 시간 이상 세션이 사용되지 않으면 자동으로 삭제되게 할 수 있다.
- 세션은 계속 유지되기 때문에 메모리의 참조가 사라지지 않는다. 따라서 자바의 경우 GC가 삭제하는 것이 아니기 때문에 너무 많은 세션을 오래 유지해서는 안된다.
- 서버 이중화나 MSA 같은 분산 환경에서 서로 다른 서버에 있는 세션 정보를 동기화해야 하기 때문에 관리가 힘들다.
세션 사용 예시
세션 서버에 부하를 줄 수 있기 때문에 로그인한 동안 사용할 데이터만 저장하는 용도로 쓰인다.
- 사용자 인증 정보
- 장바구니
- 작성 중인 폼 정보 유지
'개발 > 이론' 카테고리의 다른 글
[Spring] WebFlux (0) | 2023.02.27 |
---|
@뽀글뽀글 개발자 :: 뽀글뽀글 개발 일지
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!