Network

HTTP Cookie와 HTTP Session에 대해 알아보자

숄구-ml 2023. 1. 15. 16:05

 

 

 

 

우리가 사용하는 인터넷을 통신해주는 HTTP는 계속 연결되어 있는 것이 아니다.

클라이언트가 검색을 했을 시에 서버는 그 검색에 대한 정보를 반환해 주고 끊어진다. 이것을 Stateless 프로토콜 이라고 한다. 즉, 계속 연결되어 있지 않다는 뜻이다. 

 

 

 

HTTP Cookie

쿠키를 사용하지 않는다면,

클라이언트가 요청을 했을 때 서버는 이전의 요청을 기억하지 못한다. 예를 들어, 어떤 사이트에 로그인 했을 때 다음 페이지를 넘길 때마다 로그인을 해줘야 하는 경우가 발생한다. 

 

쿠키를 사용한다면,

로그인 정보에 대해서 서버에서는 set-cookie 헤더로 정보를 담아 응답해주고, 이는 클라이언트의 웹 브라우저 별도 Cookie 저장소에 저장된다. 따라서 서버에 요청을 보낼 때마다 Cookie 저장소를 조회하게 되고 Cookie가 로그인 정보를 같이 보내면서 그 서버에 로그인이 되었다는 것을 확인시킨다. 

 

 

출처: https://noahlogs.tistory.com/38

 

 

이러한 Cookie에는 이름, 값, 만료 날짜, 경로 정보가 들어있다. 기본적으로 Cookie는 웹 브라우저가 종료되면 삭제되지만 만료 날짜를 지정해 주었다면 만료일이 되어서야 삭제된다. 또한 웹 브라우저에 해당 서버의 쿠키 정보가 있다면 HTTP 요청 (HTTP 헤더의 Cookie)에 무조건 담아 보낸다. 

 

 

 

HTTP Session

Session이란 통신을 하기 위해 서로 연결된 순간부터 통신을 마칠 때 까지의 기간을 의미한다. 

HTTP Session은 Client가 웹서버에 연결된 순간부터 웹 브라우저를 닫아 서버와의 HTTP 통신을 끝낼 때 까지의 기간이다.

보통 HTTP Session을 말할 때는 서버에 Session에 대한 정보(Session 상태, Client 상태, Session 데이터 등)를 저장해 놓고 Session Cookie(고유한 Session ID 값)를 Client에게 주어 서버가 Client를 식별할 수 있도록 하는 방식 자체를 의미하는 경우가 많다. 

 

출처: https://chobopark.tistory.com/232

 

 

 

출처: https://noahlogs.tistory.com/38

 

 

Session은 서버에 Session 객체를 생성하며, 각 Client마다 고유한 Session ID 값을 부여한다. 

그리고 Cookie를 사용하여 이 Session ID 값을 Client에 보내고, 

Web 브라우저가 종료되면 Session Cookie는 삭제된다. 

 

 

 

 

Cookie와 Session의 관계

Cookie는 Stateless한 HTTP 통신에서 Client에게 정보를 주어 해당 클라이언트를 식별하기 위해 만들어졌다. 이 식별 정보를 통해 서버는 특정 클라이언트와 계속해서 통신을 하고 있는지 확인이 가능하다. 

하지만 클라이언트에 저장된다는 Cookie는 보안에 있어서 치명적인 단점이 된다. 

Session은 Cookie를 이용해서 Session-ID만 저장하고 그것으로 구분하여 서버에서 처리하기 때문에 비교적 보안성이 높다. 

쿠키는 만료기간이 있지만 파일로 저장되기 때문에 브라우저를 종료해도 정보가 유지될 수 있다. 또한 만료기간을 따로 지정해 쿠키를 삭제할 때까지 유지할 수도 있다. 

반면에, 세션도 만료기간을 정할 수 있지만 브라우저가 종료되면 만료기간에 상관없이 삭제된다. 

속도 면에서는 쿠키가 로컬에 저장되기 때문에 유리하다. 

따라서, 쿠키와 세션을 적절한 요소 및 기능에 병행 사용하여 보안과 속도라는 두마리 토끼를 잡을 수 있다. 

 

** 쿠키와 세션, vs 캐시 

캐시는 웹 페이지를 빠르게 렌더링 할 수 있도록 도와주고, 쿠키/세션은 사용자의 인증을 돕는다.  

 

 

 

 

 

728x90