쿠키(Cookie) vs. 세션(Session)

u-nij·2022년 10월 14일
0

HTTP Protocol

기본적으로 HTTP 프로토콜 환경은 Connectionless, Stateless한 특성을 가지기 때문에, 서버는 클라이언트가 누구인지 매번 확인해야 한다.

  • Connectionless: 클라이언트가 요청을 한 후 응답을 받으면 연결을 끊어버린다.
  • Stateless: 통신이 끝나면 상태 정보를 유지하지 않는다.

세션과 쿠키는 이러한 특성을 해결하기 위해 사용된다. 만약 세션과 쿠키를 사용하지 않는다면, 사용자는 페이지를 이동할 때마다 로그인을 다시 해야 한다.

쿠키(Cookie)

쿠키는 클라이언트의 로컬에 저장되는 Key/Value 형태를 가진 작은 데이터이다. 클라이언트에 300개의 쿠키를 저장할 수 있으며, 하나의 도메인당 20개의 값만 가질 수 있다. 하나의 쿠키 값은 4KB까지 저장한다.
클라이언트가 요청을 보내면, 서버에서 쿠키를 생성해 HTTP Header에 쿠키를 포함해 응답한다. 브라우저가 종료되어도 쿠키의 만료 기간이 남아있다면 클라이언트에서 보관하고 있다. 클라이언트가 같은 요청을 보내게 될 경우 HTTP Header에 쿠키를 함께 보낸다. 서버에서 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트하고, 변경된 쿠키를 HTTP Header에 포함해 응답을 보낸다.

세션(Session)

클라이언트가 서버에 접속하게 되면, 서버는 클라이언트를 구분하기 위해 고유한 세션ID를 부여하고, 이 세션ID를 서버 측에 저장한다. 클라이언트는 쿠키를 사용해 세션ID 데이터를 가지고 있고, 서버에 요청을 보낼 때 해당 데이터를 같이 서버에 전달한다. 서버는 전달받은 세션ID를 이용해 클라이언트 정보를 가져와 적절한 응답을 보낼 수 있게 된다. 또, 클라이언트가 서버에 접속해 브라우저를 종료할 때까지 인증 상태를 유지할 수 있다. 세션이 쿠키보다 보안면에서 우수하지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다.

쿠키와 세션의 차이

쿠키세션
저장 위치클라이언트웹 서버
보안취약하기 때문에, 지워지거나 조작되어도 큰 지장이 없는 수준의 정보를 저장하는데 사용된다더 우수하기 때문에 노출되면 안되는 정보들을 다루는데 사용한다
요청 속도서버의 처리가 필요하지 않기 때문에 더 빠르다정보가 서버에 있기 때문에 비교적 느리다
라이프 사이클브라우저를 종료해도 유지 가능브라우저가 종료되면 삭제된다

참고

https://interconnection.tistory.com/74
https://devuna.tistory.com/23

0개의 댓글