쿠키(cookie) vs 세션(session)

Gyuhan Park·2021년 1월 18일
1

CS

목록 보기
1/2
post-thumbnail

쿠키와 세션이 항상 헷갈려 정리해보려고 한다.

[쿠키와 세션이 필요한 이유]

client와 server는 항상 연결되어 있는 상태가 아니라 request-response의 반복으로 데이터를 주고받는다. 다시 말해 서버는 사용자를 기억하지 못한다. 이는 HTTP가 다음과 같은 특성을 따르기 때문이다.

  1. connectless(request -> response -> 연결종료)
  2. stateless(no connect -> no memory)

따라서 사용자(데이터)를 기억하기 위해 쿠키와 세션이 사용된다. 다음으론 쿠키와 세션의 차이를 알아보자.


🍪 쿠키(cookie)

  • 사용자의 로컬 컴퓨터에 저장.
  • 사이트에 재방문할 때 request header에 자동으로 쿠키가 추가되고, 서버가 쿠키를 읽어 사용자 식별.
  • 사용자마다 다르게 페이지를 구성할 수 있음.
  • 브라우저를 닫는 경우 자동으로 삭제되는 쿠키(세션 쿠키), 클라이언트와 서버간 연결이 끊어진 경우 삭제되는 쿠키(메모리 쿠키) 등이 존재.
    ex) 자동 로그인, 7일간 팝업창 닫기 등에 사용

=> 쿠키는 로컬에 저장되므로 쿠키 위변조 등 보안에 취약하기 때문에, 민감한 정보는 서버측에서 클라이언트를 식별하는 ‘세션’을 주로 이용한다.


🍭 세션(session)

  • 브라우저가 종료되기 전까지 클라이언트의 요청을 유지.
  • 쿠키를 기반하고 있지만, 사용자 정보 파일을 서버에서 관리.
  • client마다 session ID 를 쿠키로 저장(메모리 쿠키).
  • 세션의 내용은 서버에 저장되기 때문에 사용자가 많아질수록 서버 메모리를 많이 차지함.

특징cookiesession
저장위치clientserver
속도빠름느림(서버 접근)
Lifecycle보통 만료시점까지 파일로 저장브라우저 종료 시 삭제
용도사용자 편의중요 정보 관리

But❗️ session방식도 결국엔 서버에 무리를 주기 때문에 사용자가 많을 경우 성능이 저하된다. 따라서 최근에는 JWT라는 토큰기반 인증방식을 사용한다.

profile
단단한 프론트엔드 개발자가 되고 싶은

0개의 댓글