Flask를 사용해 웹 서버를 구현하던 중, 로그인 정보를 다른 페이지로 넘기기 위해 session을 사용하게 되었다.

이를 계기로, session의 구동 원리와 session과 coockie의 차이점를 분석해보기로 했다.


HTTP통신은 클라이언트가 요청을 한 뒤 응답을 받으면 통신을 끊는다. 

쿠키와 세션은 이 특징을 해결하기 위해서 사용한다.

예를 들어, 사용자가 로그인을 하고 난 뒤 그 로그인 상태를 유지시키는 것이다.

 

쿠키

  • 클라이언트의 상태정보를 로컬에 저장했다가 참조한다.
  • 브라우저가 종료되어도 만료 기간내라면 클라이언트에서 보관한다.
  • 클라이언트가 페이지를 요청하면 서버에서 쿠키를 생성해 HTTP 헤더에 쿠키를 포함시켜 응답한다.
  • 사용 예 : 쇼핑몰 장바구니 기능

 

세션

  • 쿠키를 기반으로 하지만, 서버측에서 관리한다.
  • 클라이언트가 서버에 접속 시 세션ID를 발급받고, 클라이언트가 해당 세션ID를 가지고 있는다.
  • 클라이언트가 서버에 요청할 때 세션ID를 서버에 전달하고, 전달받은 ID로 클라이언트 정보를 가져온다. 
  • 가져온 정보로 요청을 처리해 클라이언트에 응답한다.
  • 보안 면에서 쿠키보다 우수하지만 사용자가 많아지면 서버 메모리를 많이 차지할 수도 있다.
  • 사용 예 : 로그인

 

차이점

둘 다 비슷한 역할을 하고, 세션이 쿠키를 기반으로 하고 있다.

하지만, 쿠키보다 세션이 서버에서 관리되기 때문에 보안 면에서 우수하다.

쿠키는 파일로 로컬에 저장되기 때문에 브라우저를 종료해도 남아있지만 (쿠키도 만료시간이 있다),

세션은 브라우저가 종료되면 만료시간에 상관없이 사라진다.

+ Recent posts