쿠키(Cookie)와 세션(Session) 그리고 캐시(Cache)

onady·2022년 5월 4일
0

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

HTTP 프로토콜의 특성이자 약점을 보완하기 위해 사용한다.

HTTP의 특징

connectionless(비연결지향)

클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어 버리는 특징

stateless(상태정보 유지 안함)

통신이 끝나면 상태를 유지하지 않는 특징

쿠키와 세션은 위의 두 가지 특징을 해결하기 위해 사용한다. 예를들면 로그인 후 페이지를 이동할 때 쿠키와 세션을 사용하여 로그인 상태를 유지시킬 수 있다.

쿠키

  • 쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
  • 사용자 인증이 유효한 시간을 명시할 수 있고, 브라우저가 종료되어도 유효 시간 동안 인증이 유지된다.
  • 쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시 Request Header에 넣어서 자동으로 서버에 전송한다.
  • 예를 들면 팝업에서 '오늘 더 이상 이창을 보지 않음'체크, 쇼핑몰의 장바구니 기능

세션

  • 세션은 쿠키를 기반하고 있지만 사용자 정보 파일을 서버 측에서 관리한다.
  • 서버에서 클라이언트를 구분하기 위해 세션 ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지한다.
  • 접속 시간에 제한을 두어 일정 시간 응답이 없으면 정보가 유지되지 않게 설정이 가능하다.
  • 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다.
  • 즉 동접자 수가 많은 웹 사이트인 경우 성능 저하의 요인이 된다.
  • 예를 들면 로그인 같이 보안상 중요한 작업을 수행할 때 사용

쿠키와 세션의 차이

  • 사용자의 정보가 저장되는 위치가 다르다. 쿠키는 클라이언트 로컬에 저장, 세션은 서버에서 관리한다.
  • 세션은 서버에서 관리하기 때문에 보안 면에서는 세션이 더 우수하고, 요청 속도는 쿠키가 더 빠르다.
  • 세션은 만료시간에 상관없이 브라우저가 종료되면 삭제된다.

캐시

  • 캐시란 나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스 해주는 것이다. 즉, 미리 결과를 저장하고 나중에 요청이 오면 그 요청에 대해서 DB 또는 API를 참조하지 않고 캐시에 접근하여 요청을 처리한다.

참조

https://ryusae.tistory.com/7
https://interconnection.tistory.com/74

0개의 댓글