본문 바로가기
ComputerScience/Network

Cookie와 Session

by 규난 2022. 11. 26.
728x90

HTTP 프로토콜은 connectionless, stateless한 특성을 가지고 있기 때문에 같은 클라이언트의 요청자라도 서버는 매번 새로운 사용자로 인식한다는 단점이 존재합니다. 이러한 단점을 해결하기 위해 쿠키와 세션을 사용합니다.

 

Cookie

쿠키는 웹 사이트에 접속할 때 생성되는 정보를 담은 임시파일입니다.

데이터의 형태는 Key, Value로 구성이 되고 String 형태로 이루어져 있습니다. 또한 사용자가 따로 요청하지 않아도  헤더에 쿠키를 자동으로 넣어서 서버에 요청을 보냅니다. 쿠키의 주 사용처는 사용자 로그인 세션관리, 광고 정보 트래킹 등에 쓰입니다.

 

Cookie의 단점

웹 사이트에 대한 정보 및 개인정보가 기록되고 서버가 가지고 있는 것이 아니라 브라우저에 저장되기 때문에 임의로 수정하거나 가로채기 쉬워 보안에 취약합니다. 이러한 취약점은을보완하기 위해 세션을 사용합니다.

 

Session

세션은 사용자 정보를 브라우저에 저장하는 쿠키와 달리 서버에 저장합니다. 서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여하여 브라우저가 서버에 접속해서 브라우저를 종료할 때 까지 인증상태를 유지합니다. 사용자에 대한 정보를 서버에 두어 쿠키보다 보안적인 측면에서는 좋지만 사용자가 많아질수록 메모리를 많이 차지하게 되어 서버에 과부하를 주게 되므로 성능 저하의 요인이 될 수 있습니다.

 

Cookie와 Session을 이용한 사용자 인증

  1. 클라이언트가 서버에 요청시 세션 ID를 발급 받음
  2. 클라이언트는 발급 받은 세션 ID를 쿠키에 저장
  3. 서버에 요청시 Request Header에 쿠키를 포함해서 전송
  4. 서버는 요청받은 쿠키의 세션 ID를 통해 사용자 인증

Cookie와 Session의 차이

  1. 쿠키는 데이터를 클라이언트의 웹 브라우저가 지정하는 메모리 또는 하드디스크에 세션은 서버에 저장
  2. 쿠키는 클라이언트의 메모리를 사용하기 때문에 서버의 자원을 사용하지 않고 세션은 서버에 저장되고 서버의 메모리를 사용하기 때문에 서버의 리소스를 차지
  3. 쿠키는 한 도메인당 20개 하나의 쿠키당 4KB의 용량 제한. 세션은 개수와 용량제한이 따로 없음
  4. 쿠키는 만료 날짜를 지정하여 브라우저를 종료해도 계속해서 쿠키 정보를 유지 할 수 있음(만료 날짜를 지정하지 않으면 브라우저 종료시 만료). 세션은 만료 날짜를 지정해도 브라우저가 종료되면 만료 날짜의 상관없이 삭제
728x90

'ComputerScience > Network' 카테고리의 다른 글

REST API  (0) 2022.11.21
HTTP  (0) 2022.11.21