쿠키와 세션

민순기·2021년 12월 13일

쿠키와 세션을 사용하는 이유

1. HTTP
HTTP(Hypertext Transfer Protocol)는 인터넷상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는 통신규약을 말한다.

이 HTTP의 두 특성, 비상태성(Stateless)과 비연결성(Connectionless)을 보완하기 위해 쿠키와 세션을 사용한다.

비상태성과 비연결성은 서버의 자원을 절약하기 위해 모든 사용자의 요청마다 연결과 해제의 과정을 거치게 되는데

때문에 연결 상태가 유지되지 않고 연결 해제 후의 상태 정보가 저장되지 않는다.

이로 인해 같은 사용자가 요청을 여러번 하더라도 매번 새로운 사용자로 인식한다는 단점이 있다.

예를 들어 로그인을 한 후 다른 여러 요청을 냈을 때 로그인 한 상태가 유지되지 않는다는 점이다.

이를 보완해주는 것이 쿠키와 세션이다.

2. 쿠키 (cookie) 🍪

쿠키는 클라이언트 로컬에 저장되는 key-value 쌍의 작은 데이터 파일이다.

쿠키에는 이름, 값, 만료 날짜(시간), 경로 정보 등이 담겨있다.

쿠키는 클라이언트의 상태 정보를 로컬에 저장해놨다가 요청할 때 참조된다.

3. 세션

세션은 쿠키를 기반으로 하고 있지만 로컬에 파일로 저장되는 쿠키와는 다르게 세션은 서버에 저장된다.

즉, 일정 시간동안 같은 브라우저로 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 것이다.

클라이언트가 request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 세션ID를 부여한다.

쿠키와 세션의 차이

제목쿠키세션
저장공간로컬서버
보안로컬에 저장되기 때문에 변질되거나 스나이핑 당할 위험 취약쿠키를 이용해서 세션 ID만 저장하고 세션은 서버에서 관리하기 때문에 쿠키보다 안전
라이프 사이클만료시간이 존재 브라우저를 종료해도 남아있음만료시간이 존재 브라우저를 종료하면 삭제됨
속도로컬에서 관리하기 때문에 빠름서버에 있기 때문에 처리시간으로 인해 쿠키보다 느림
사용 예시쇼핑몰의 장바구니 아이디 비밀번호 저장로그인 등과 같은 중요한 작업
profile
2년차 FE 개발자 민순기입니다.

0개의 댓글