IT 개념 정리

쿠키, 세션의 특징과 사용하는 이유

쫑인스 2021. 3. 21. 16:02

1. 쿠키와 세션을 쓰는 이유

  • HTTP 2가지 특징인 비연결지향와 상태없음으로 인해 서버는 클라이언트의 상태를 알 수 없다. 클라이언트의 상태를 알아야 될 경우 ( ex. 인증 ) 쿠키와 세션을 사용한다.

 

2. HTTP 의 특징

  • 비연결지향 ( Connectionless ) : request 에 대한 response 를 해주면 서버와 클라이언트가 연결이 끊어진다. 커넥션을 낭비하지 않기 때문에 리소스의 낭비를 줄일 수 있다.
  • 상태없음 ( Stateless ) : 커넥션을 끊는 순간 상태 정보를 유지하지 않는다.

 

3. 쿠키

3.1. 쿠키의 특징

  • 쿠키는 클라이언트 로컬에 저장되는 key-value 형태의 데이터이다. ( 이름, 값, 유효시간, 도메인, 경로 )
  • 클라이언트 로컬에 저장되기 때문에 상대적으로 변조되기 쉽다.
  • 클라이언트의 상태 정보를 로컬에 저장했다가 request 할 때 참조된다.
  • 브라우저가 종료되도 유지된다.
  • 크롬 개발자 도구(F12) 기준 Application -> Storage -> Cookies

3.2. 쿠키의 동작 방식

3.3. 쿠키의 종류

  • 세션 쿠키 ( Session Cookie ) : 웹 브라우저가 종료될 때 제거되는 쿠키
  • 지속 쿠키 ( Persistent Cookie ) : 유효시간을 정하지 않은 경우 브라우저가 종료되어도 남아 있는 쿠키
  • + Secure Cookie, Third-Party Cookie 등

3.4. 쿠키 저장 한계

  • 클라이언트에 최대 300개 까지 쿠키를 저장 가능
  • 서버 도메인 하나당 최대 20개의 쿠키를 저장 가능
  • 하나의 쿠키 값은 최대 4KB까지 저장 가능

 

4. 세션

서버에 클라이언트의 상태 정보를 저장한다.

4.1. 세션의 특징

  • 세션 id만 쿠키로 저장하고 상태 데이터들을 서버에 저장한다.
  • 세션 id를 제외하고 서버에 저장되기 때문에 쿠키보다 보안성이 높다.
  • 서버에 저장하기 때문에 서버의 부하가 늘어나고 상대적으로 속도가 느리다.
  • 브라우저가 종료되면 소멸한다.

4.2. 세션의 동작 방식

  • 클라이언트가 서버에 접속 시 세션 ID 를 발급한다.
  • 클라이언트는 세션 ID 에 대해 쿠키를 사용해서 정보를 저장한다.
  • 클라이언트가 서버에 다시 접속시 쿠키를 이용해서 세션 ID 값을 서버에 전달한다.

 

5. 쿠키와 세션을 이용한 로그인 판단

 

6. 기타

6.1. 보안상 모두 세션을 쓰면 되는데 쿠키를 사용하는 이유

  • 세션은 서버에 저장되고, 서버자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원도 많아지게 되므로 쿠키와 세션을 적절하게 사용하여, 서버 자원의 낭비를 방지할 수 있다.

6.2. 캐시

  • 브라우저 캐시는 이미지, CSS, JS 파일 등이 사용자의 브라우저에 저장되는 것이다. 캐시에 저장이 되고 나서 파일을 변경해서 배포하게 되면 변경 이전에 브라우저에 저장되어 있던 파일을 재사용한다. 사용자가 캐시를 삭제하거나 header 에 자원 캐시 만료시간을 명시해서 캐시를 회피할 수 있다.

 

참고 자료

 

'IT 개념 정리' 카테고리의 다른 글

[자료구조] 자료구조란?  (0) 2021.09.22
[객체지향] 의존성 주입  (0) 2021.05.03
배치 프로그램  (0) 2021.03.21
[아키텍처] CQRS 와 이벤트 소싱  (0) 2021.03.16
그거 뭔지 모르겠어 : SPA  (0) 2021.03.07