쿠키, 세션, 웹스토리지

ㄷr r요·2023년 12월 22일
0
post-custom-banner

쿠키, 세션, 웹스토리지의 차이에 대해 설명해주세요.

먼저 데이터의 저장 위치가 다른데 쿠키는 클라이언트, 세션은 서버고
웹 스토리지도 클라이언트에 데이터를 저장할 수 있는 저장소이다.

저장위치 때문에 쿠키는 스니핑에 당할 우려가 있지만,
세션은 쿠키를 이용해 세션 아이디만 저장하고 서버에서 처리하기 때문에 보안성은 쿠키보다 세션이 좋다.

또한 라이프 사이클에서도 차이가 있다.
쿠키는 브라우저를 종료해도 만료기간이 남아있으면 존재하며
세션은 브라우저 종료 시 만료기간에 상관없이 종료된다.
웹 스토리지는 로컬 스토리지(Local Storage)와 세션 스토리지(Session Storage)가 있는데
로컬 스토리지는 사용자가 데이터를 지우지 않는 이상
브라우저나 OS를 종료해도 계속 브라우저에 남아있는 영구성을 가지며
세션 스토리지는 데이터가 오리진 뿐만 아니라 브라우저 탭에도 종속되기 때문에,
윈도우나 브라우저 탭을 닫을 경우 제거되어
일시적으로 필요한 데이터를 저장(일회성 로그인 정보, 입력폼 저장 등)하는 데에 쓰인다.

차이점에 이어서 각자의 특징에 관해 조금 더 얘기해보자면

쿠키는 클라이언트(브라우저)에 저장되는 키와 같이 들어있는 작은 파일이며
클라이언트의 상태 정보를 로컬에 저장했다가 참조한다.
클라이언트에 300개까지 쿠키저장이 가능하고 하나의 도메인당 20개의 값만 가질 수 있으며 하나의 쿠키값은 4KB까지 저장이 가능하다.
쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request 시에 Request Header를 넣어서 자동으로 서버에 전송한다.

세션은 서버에서 클라이언트를 구분하기 위해 세션 ID를 부여하며,
웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지한다.
접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정 가능하다.
사용자가 많아질수록 서버 메모리를 많이 차지하게 되는 단점이 있다.

웹 스토리지는 클라이언트에 데이터를 저장할 수 있도록 HTML5부터 추가된 저장소이다.
간단한 Key-Value 스토리지 형태로 이루어지며 쿠키와 달리 자동 전송의 위험성이 없다.
오리진(Origin)(도메인,프로토콜,포트) 단위로 접근이 제한되는 특성 덕분에 CSRF로 부터 안전하다고 볼 수 있다.
또한 쿠키보다 큰 저쟝 용량 지원한다.(모바일 2.5MB, 데스크탑 5~10MB)
그리고 서버가 HTTP 헤더를 통해 스토리지 객체를 조작할 수 없으며(웹 스토리지 객체 조작은 JavaScript 내에서만 수행)
오직 문자형(string) 데이터 타입만 지원한다.

profile
개발 공부
post-custom-banner

0개의 댓글