thumbnail
Cookie vs Session vs Web Storage
Network
2022.10.05.

HTTP 프로토콜 한계

HTTP 프로토콜의 한계를 보안하기 위해 쿠키 또는 세션을 사용합니다.

HTTP 프로토콜 환경은 비연결지향, 무상태한 특성을 가지기 때문에

요청만으로 서버는 클라이언트를 구별할 수 없습니다.

  • 비연결성지향

    • HTTP는 먼저 클라이언트가 요청을 서버에 보내면, 서버는 응답을 보내고 TCP/IP 연결을 끊습니다.
  • 무상태

    • 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보를 유지하지 않는 특성입니다.

Cookie

  • 클라이언트에 저장되는 키와 같이 들어있는 작은 파일이다.

  • 클라이언트의 상태 정보를 로컬에 저장했다가 참조합니다.

  • 300개까지 쿠키저장 , 하나의 도메인당 20개의 값, 하나의 쿠키값은 4KB까지 저장 가능합니다.

  • Response Header에 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있습니다.

  • 쿠키는 따로 요청하지 않아도 브라우저가 Request시 Request Header를 넣어서 자동으로 서버에 전송합니다.

Session

  • 사용자 정보를 파일 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리합니다.

  • 서버는 클라이언트를 구분하기 위해 세션 ID를 부여, 서버에 접속해서 브라우저 종료까지 상태를 유지합니다.

  • 접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정 가능합니다.

  • 데이터를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지합니다.

Web Storage

  • 클라이언트에 데이터를 저장할 수 있도록 HTML5부터 추가된 저장소입니다.

  • 간단한 Key-Value 스토리지 형태입니다.

  • 쿠키와 달리 자동 전송의 위험성이 없습니다.

  • 오리진(Origin)(도메인,프로토콜,포트) 단위로 접근이 제한되는 특성 덕분에 CSRF로 부터 안전합니다.

  • 쿠키보다 큰 저쟝 용량 지원(모바일 2.5MB, 데스크탑 5~10MB)합니다.

  • 서버가 HTTP 헤더를 통해 스토리지 객체를 조작할 수 없습니다.(JavaScript 내에서만 수행 가능)

  • 오직 문자형(string) 데이터 타입만 지원합니다.

  • Local Storage와 Session Storage가 있으며, 같은 Storage 객체를 상속하기 때문에 메서드가 동일합니다.

Local Storage

사용자가 데이터를 지우지 않는 이상, 브라우저나 OS를 종료해도 계속 브라우저에 남아있습니다.

단, 동일한 브라우저를 사용할 때만 해당합니다.

지속적으로 필요한 데이터를 저장합니다.

Session Storage

데이터가 오리진 뿐만 아니라 브라우저 탭에도 종속되기 때문에, 윈도우나 브라우저 탭을 닫을 경우 제거합니다.

일시적으로 필요한 데이터를 저장합니다.

제 블로그에 방문해주셔서 감사합니다. 😊