쿠키와 세션을 사용하는 이유?
HTTP 프로토콜의 특징이자 약점(stateless)을 보완하기 위해서
쿠키
특징
- 이름, 값, 만료일, 경로 정보로 구성
- 클라이언트에 총 300개의 쿠키를 저장할 수 있다.
- 하나의 도메인당 20개의 쿠키를 가질 수 있다.
- 하나의 쿠키는 4KB 저장가능
사용자가 특정한 웹사이트에 방문할 때, 사용자 컴퓨터에 저장하는 기록파일
서버의 자원을 전혀 사용하지 않는다
사용예시: 아이디와 비밀번호를 저장하시겠습니까?, 쇼핑몰의 장바구니 기능, 자동로그인, 오늘은 더이상 이창을 보지않음 팝업
세션
특징
- 브라우저를 닫거나, 서버에서 세션을 삭제했을 때만 삭제가 되므로, 쿠키보다 비교적 보안이 좋다.
- 저장데이터의 제한이 없다.
- 각 클라이언트에 고유 Session ID를 부여한다. Session ID로 클라이언트를 구분해 각 요구에 맞는 서비스를 제공
일정 시간 동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술이다.
여기서 일정시간은 웹 브라우저를 통해 웹 서버에 접속한 시점부터 웹 브라우저를 종료하여 연결을 끝내는 시점
서버가 클라이언트에게 고유한 sessionID를 부여하면,
클라이언트는 요청시마다 sessionID와 함께 요청한다.
사용예시: 웹사이트에 한번 로그인하면, 다른페이지로 이동해도 계속 접속상태가 유지된다.

쿠키와 세션의 차이점
- 쿠키와 세션은 비슷한 역할을 하며, 동작 원리도 비슷하다. 그 이유는 세션도 결국 쿠키를 사용하기 때문이다.
- 큰 차이점은 사용자의 정보가 저장되는 위치이다. 쿠키는 서버의 자원을 전혀 사용하지 않으며, 세션은 서버의 자원을 사용한다.
- 보안 면에서 세션이 더 우수하다.
쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스니핑 당할 우려가 있어서 보안에 취약하지만
세션은 쿠키를 이용해서 session-id만 저장하고 그것으로 구분하여 서버에서 처리하기 때문에 비교적 보안성이 높다.
- 쿠키는 만료일을 지정할 수있지만 브라우저를 종료해도 유지된다. 세션은 브라우저를 종료하면 삭제된다.
- 속도는 쿠키가 더 좋다. 세션은 정보가 서버에 있기때문에 비교적 느리다.
세션의 장단점
장점
- 클라이언트에게는 세션ID을 제공하고 회원에대한 중요한 정보는 서버가 가지고있다.
- 민감한 데이터를 클라이언트에 직접적으로 보내지 않는다.
- 클라이언트 브라우저가 가지고 있는 세션ID에는 개인정보를 포함하지 않는다.
단점
- 세션ID를 털리면 다른사용자가 사용자인척 위장할 수 있다.
- 웹서버에 세션정보를 기록하고 있어야하므로 접속자가 많으면 서버에 메모리 부하가 존재할수있다.
캐시와 다른점?
캐시는 웹페이지요소를 저장하기 위한 임시저장소
쿠키, 세션은 정보를 저장하기 위해 사용된다.
캐시는 웹페이지를 빠르게 렌더링할수 있게 해주고
쿠키, 세션은 사용자 인증을 도와준다.
캐시의 특징
- 캐시는 이미지, 비디오, 오디오, css, js파일 등 데이터나 값을 미리 복사해 놓는 리소스 파일들의 임시 저장소이다.
- 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다.
- 같은 웹 페이지에 접속할 때 사용자의 PC에서 로드하므로 서버를 거치지 않아도 된다.
- 이전에 사용된 데이터가 다시 사용될 가능성이 많으면 캐시 서버에 있는 데이터를 사용한다.
- 그래서 다시 사용될 확률이 있는 데이터들이 빠르게 접근할 수 있어진다. (페이지의 로딩 속도 ↑)
참고
'CS' 카테고리의 다른 글
| WEBP 이미지와 SEO의 상관관계 (0) | 2023.09.14 |
|---|---|
| [cs] 웹 브라우저의 구성 (0) | 2023.04.20 |
| HTTP, HTTPS의 차이 (0) | 2023.04.20 |
| [용어] 인스턴스와 프로퍼티, 메소드 (0) | 2023.04.20 |
| node.js, npm, npx (0) | 2023.04.19 |