-
세션과 쿠키, 그리고 웹 스토리지CS 2024. 1. 7. 16:59
사용 이유
세션과 쿠키, 웹 스토리지는 모두 HTTP의 connectionless(연결이 없는), stateless(상태가 없는) 특성을 보완하기 위해 사용되는 기술이다. 즉, 클라이언트가 서버에 요청을 보내면 서버는 그 요청에만 응답을 하고, 클라이언트의 상태를 저장하진 않는다. 그렇기에 서버는 클라이언트가 어떤 요청을 했고, 어떤 정보를 가지고 있는지 알 수 없다.
따라서 세션과 쿠키, 웹 스토리지는 HTTP의 단점을 보완하기 위해 클라이언트의 상태를 서버나 클라이언트에 저장하고, 이를 통해 서버는 클라이언트의 상태를 파악하여, 각 사용자에게 맞춤화된 서비스를 제공하거나 사용자의 행동을 추적할 수 있다.
웹 스토리지 기술
웹 애플리케이션이 클라이언트 측에 데이터를 저장하고 관리할 수 있도록 하는 기술을 의미
웹 스토리지 기술을 사용하면 사용자의 선호도나 설정을 저장하고, 브라우저를 종료하더라도 데이터 유지가 가능하고, 사용자의 로그인 상태를 유지하고 브라우저를 종료하더라도 로그인된 상태를 유지할 수 있다. 또한 장바구니와 같이 브라우저를 종료하더라도 장바구니의 상태를 유지하는 것 같은 작업을 수행할 수 있다.
웹 스토리지 기술은 다음과 같이 나눌 수 있다.
로컬 스토리지 세션 스토리지 브라우저를 종료하더라도 데이터 유지되는
영구 데이터 저장 방식브라우저를 종료하면 데이터가 삭제되는
임시 데이터 저장 방식사용자의 설정, 로그인 정보, 장바구니 등의
데이터 저장 용도로 주로 사용사용자의 로그인 상태 유지, 장바구니 관리 등의 용도로 사용 이러한 웹 스토리지 기술의 장단점은 다음과 같다.
장점 단점 로컬 스토리지 데이터 용량 제한 없음
보안에 안전
데이터 영속성이 있음구현이 복잡
모든 브라우저에서 지원하지 않음세션 스토리지 데이터 용량이 제한되지 않음
데이터 영속성 있음보안에 취약
데이터 전송이 비효율적
세션
서버 측에서 관리되는 데이터 저장 방식
- 서버는 클라이언트가 웹사이트에 접속할 때마다 세션 ID를 생성하고, 클라이언트의 브라우저에 저장한다.
- 이후 클라이언트가 웹사이트에 요청을 할 때마다 세션 ID를 포함하여 요청을 전송한다.
- 서버는 세션 ID를 사용하여 클라이언트를 식별하고, 세션에 저장된 데이터를 제공한다.
세션은 일반적으로 사용자 인증, 장바구니 관리, 로그인 상태 유지 등의 용도로 사용하며, 브라우저를 종료하거나 웹사이트에서 로그아웃하면 데이터가 삭제된다.
이러한 세션의 장단점은 다음과 같다.
장점 단점 보안에 안전
사용자가 쿠키를 삭제하거나 차단해도 데이터 유지데이터 전송이 비효율적
데이터 영속성이 없음
쿠키
클라이언트 측에서 관리되는 데이터 저장 방식
- 서버는 클라이언트가 웹 사이트에 접속할 때마다 쿠키를 생성하여 클라이언트의 브라우저에 저장
- 클라이언트가 웹사이트에 요청을 할 때마다 쿠키 포함하여 요청 전송
- 서버는 쿠키를 사용하여 클라이언트를 식별하고, 쿠키에 저장된 데이터 제공
쿠키는 사용자의 선호도, 로그인 상태 유지, 광고 표시 등의 용도로 사용되며, 브라우저의 설정을 통해 삭제하거나 차단할 수 있다.
쿠키의 종류
세션 쿠키 영구 쿠키 브라우저 종료하면
삭제되는 쿠키브라우저를 종료하더라도
유지되는 쿠키사용자의 로그인 상태 유지, 장바구니 관리 등의 용도로 사용 사용자의 선호도, 광고 표시 등의 용도로 사용된다. 쿠키는 플래그를 사용하여 특성을 지정할 수 있는데,
플래그는 쿠키의 이름 뒤에 세미콜론을 붙이고 플래그의 이름과 값을 지정하여 사용한다.
쿠키의 플래그는 다음과 같다.
- secure: 암호화된 HTTPS 연결에서만 쿠키를 전송
- httpOnly: JS에서 쿠키 읽을 수 없음
- sameSite: 쿠키를 동일한 도메인 또는 도메인 계층에서만 전송 가능
- expires: 쿠키의 만료 날짜 지정
- maxAge: 쿠키의 만료 기간 지정
이러한 쿠키의 장단점은 다음과 같다.
장점 단점 구현이 간단
모든 브라우저에서 지원
데이터 전송 효율적데이터 용량이 제한적
보안에 취약
사용자가 쿠키 삭제하거나 차단 가능
세션과 쿠키, 로컬 스토리지, 세션 스토리지의 특징 비교
특징 세션 쿠키 로컬
스토리지세션 스토리지 관리 위치 서버 클라이언트 데이터
영속성브라우저
종료 시 삭제브라우저 종료,
로그아웃,
브라우저 설정 변경 시
삭제영구 브라우저 종료 시 삭제 용도 사용자 인증,
장바구니 관리,
로그인 상태 유지사용자 선호도,
로그인 상태 유지,
광고 표시사용자 설정,
로그인 정보,
장바구니'CS' 카테고리의 다른 글
Vue vs React (프레임워크 vs 라이브러리) (1) 2024.01.09 REST API & RESTFUL API (1) 2024.01.07 JS(JavaScript) 문법 (0) 2023.12.03 서버와 클라이언트 (1) 2023.12.03 동기 및 비동기 처리 (1) 2023.12.03