마이의 개발 블로그

[Web] 쿠키(cookie)와 세션(session) 본문

개발지식/Web

[Web] 쿠키(cookie)와 세션(session)

개발자마이 2022. 3. 7. 23:14
반응형

HTTP의 특징 2가지

1. 무상태 (stateless)

 - 통신이 끝나면 상태정보를 유지하지 않는다는 특성 (이전의 요청과 다음의 요청이 관련이 없다는 의미)

 - 장점 : 다수의 요청에 대해 서버가 추가 정보를 관리할 필요가 없어 부하를 줄일 수 있음

 - 단점 : 서버측에서 클라이언트의 식별이 불가능함

 

2. 비연결성 (connectionless)

 - 요청에 대한 응답이 끝나면 연결(connection)을 끊는다는 특성

 - 장점 : 연결에 필요한 리소스를 효율적으로 관리하게 해줌 (불특정 다수의 클라이언트)

 - 단점 : 동일한 클라이언트의 경우에도 연결, 해제에 대한 오버헤드 발생

 

쿠키와 세션의 사용 이유

웹을 사용하다보면 서버가 클라이언트의 정보를 알아야하는 경우가 많다. 예를들어, 쇼핑몰에서 물건을 구매하려면 사용자는 보통 로그인-물건고르기-장바구니담기-결제하기 등의 과정을 거쳐야 한다. HTTP 자체로는 위에 언급된 특징들(무상태, 비연결성)로 인해 상품 구매의 모든 과정마다 로그인을 해줘야 한다. 이를 보완하기 위해 서버측에서 클라이언트를 식별할 수 있도록 할 필요가 있었고, 이를 위해 만들어진 요소가 쿠키와 세션이다.

 

쿠키

- 서버를 통해 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일

- 클라이언트에 주요 정보 저장. 서버를 필요로 하지 않음

- 접속이 끝나도 로컬 저장소에 데이터를 보존할 수 있음

- 구성요소 : 이름, 값, 속성 (만료 기간, 도메인, 플래그 등)

- 단점 : 클라이언트에 저장되어 있기 때문에 내용이 변경되거나 요청을 보낼 때 누군가가 데이터를 가로챌 수 있음

- 예시 : 쇼핑몰 장바구니, 자동 ID 완성, 로그인 유지 등

 

세션

- 사용자가 서버에 접속해있는 상태를 하나의 단위로 파악하여 연결을 유지시켜주는 기술

- 서버에 주요 정보 저장. 사용자는 서버로부터 고유한 세션 ID를 받아 세션쿠키에 저장하여 사용함

- 일정 시간 또는 브라우저 종료 시 삭제됨

- 장점 : 서버에만 정보가 저장되어 보안이 쿠키에 비해 우수한 편임

- 단점 : 사용자가 많아질수록 서버에 과부하가 걸림 (사용자당 하나의 세션 생성)

- 예시 : 사용자 로그인 등

 

쿠키와 세션 비교

- 쿠키는 클라이언트에, 세션은 서버에 저장됨

- 쿠키는 탈취, 변조의 위험이 있고 세션은 비교적 안전함

- 쿠키는 로컬 저장소에 유지되나 세션은 브라우저 종료 또는 세션 만료시 소멸 (세션쿠키는 세션과 함께 소멸)

- 쿠키는 속도면에서 유리하고 세션은 그에비해 느린 편

 

 

반응형
Comments