본문 바로가기

웹 개발

쿠키와 세션에 대해 알고 계시나요?

오늘은 쿠키와 세션에 대해 공부를 해볼까 한다
이 글을 정독하고 나면 쿠키와 세션에 대해 전부는 아니더라도 어느 정도 흐름은 파악할 수 있다고 생각한다
기록을 위해 작성하는 글 이니 틀린 부분이 있으면 피드백은 언제나 환영입니다

 

 

 

쿠키와 세션을 알기 위해 HTTP의 특성을 알고 있어야 한다

 

HTTP의 특성

HTTP 통신의 특징은 비연결 지향(Connectionless) 상태정보유지안함(stateless)이다

클라이언트가 서버에 요청을 하고 그것을 응답받는 형식이다

클라이언트가 서버에 요청을 하고 응답받으면 그 후 접속을 끊는 특성이 있다

 

그렇게 되면 일어날 수 있는 대표적인 문제점

사용자가 페이지를 새로고침 할 때마다 로그인을 다시 해야 할 수 있다

또한 사용자가 쇼핑몰에서 제품을 구매하려고 장바구니에 담아놨는데 그게 전부 사라지는 문제가 생길 수 있다

 

상태정보유지안함(stateless)를 방지하기 위해 쿠키와 세션을 사용한다

 

쿠키

사용자가 웹사이트를 방문할 시 그 사이트의 서버에서 사용자의 컴퓨터로 정보를 저장하는 작은 기록 파일이다

HTTP에서 사용자의 상태 정보를 사용자의 pc에 저장하였다가 필요시 사용할 수 있다

 

세션

세션은 쿠키를 기반으로 하지만 쿠키와 달리 사용자의 정보를 서버에 저장한다

서버에서는 클라이언트를 구분하기 위에 세션 ID를 부여하여 웹브라우저가 서버에 접속해서 종료할 때까지 인증 상태를 유지한다

 

쿠키의 특징

  • 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 유지된다.
  • 클라이언트에 300개까지 쿠키를 저장 가능하고 하나의 도메인당 20개의 값만 가질 수 있다, 쿠키 하나당 값은 4kb이다.

 

세션의 특징

  • 쿠키와는 다르게 세션은 서버에 저장하기 때문에 보안에 있어 좋다.
  • 서버에 저장하기 때문에 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다.
  • 그렇게 서버에 과부하를 주게 되면 성능 저하의 요인이 된다.

 

쿠키와 세션의 차이

  • 가장 큰 차이점은 정보가 저장되는 위치이다, 쿠키는 클라이언트(사용자) PC에 저장되고 세션은 서버에 저장된다
  • 보안면으로 볼 때 세션이 서버에 저장됨으로 더 우수하다
  • 요청 속도는 쿠키가 더 우수하다
  • 쿠키는 브라우저가 종료돼도 만료시간을 파일로 남겨둘 수 있어 유지가 가능하다
  • 세션은 브라우저가 종료되면 만료시간에 상관없이 삭제된다

제가 이해하고 남긴 간략한 쿠키와 세션의 글이다 참고한 글을 남겨두니 여기를 들어가 보면 더욱 자세히 이해하는데 도움이 될듯하다

 

[참고]

https://hahahoho5915.tistory.com/32 원글

https://interconnection.tistory.com/74 원글

https://chrisjune-13837.medium.com/web-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98%EC%9D%B4%EB%9E%80-aa6 bcb327582 이미지