티스토리 뷰

CS/컴퓨터네트워크

쿠키와 세션

개발기록 :) 2023. 7. 7. 21:03

쿠키와 세션

쿠키

클라리언트(브라우저) 로컬에 key-value 쌍을 저장되는 데이터 팡리이다. 유효시간 내에서는 브라우저가 종료되어도 계속 유지된다.

 

세션

브라우저가 종료되거나, 서버에서 해당 세션을 삭제할 수 있기 때문에 쿠키보다 보안성이 좋다. 또한 서버에 데이터를 저장하므로 서버 용량이 허용하는 한에서 제한 없이 데이터를 저장할 수 있다는 장점이 있지만 서버의 부하가 커진다는 단점이 될 수 있다.

 


쿠키와 세션을 사용하는 이유: HTTP의 connectionless, stateless

클라리언트가 요청을 했을 때 그 요청에 맞는 응답을 보낸 후 연결을 끊고, 서버는 클라이언트에 대한 상태 정보를 유지하지 않기 때문에 알 수 없게 된다.

 

쿠키(cookie)

쿠키의 생성과 저장은 구현에 따라 다르지만 원리는 동일하다.

  1. 서버가 클라이언트로부터 요청을 받았을 때, 클라이언트에 관한 정보를 토대로 쿠키를 구성한다.
  2. 서버는 클라이언트에게 보내는 응답의 헤더에 쿠키를 담아 보낸다.
  3. 클라이언트가 응답을 받으면, 브라우저는 쿠키를 쿠키 디렉터리에 저장한다.

 

세션(session)

세션은 기본적으로 쿠키를 이용하여 구현이 된다.

  • 클라이언트를 구분하기 위해 각 클라이언트에게 session ID를 부여하고 클라이언트는 쿠키에 session ID를 저장해 둔다.
  • 사용자 정보를 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에 저장하여 관리한다.
  • 세션은 유효시간을 두어 일정 시간 응답이 없다면 끊을 수 있고, 브라우저가 종료될 때까지 인증상태를 유지할 수 있다.

✖️ 사용자 정보를 서버에 두기 때문에 쿠키보다 보안은 좋지만 서버 자원을 차지하기 때문에 서버에 과부하를 줄 수 있고 성능 저하의 요인이 될 수 있다.