개발끄적

쿠키(Cookie)와 세션(Session)

누구세연 2024. 11. 3. 23:46

쿠키와 세션은 웹사이트에서 사용자의 상태를 유지하는데 필요한 기술입니다.

이를 이해하기 쉽게 비교해서 정리해 보겠습니다!👩🏻‍💻

 

 

쿠키와 세션이란?

  • 쿠키는 웹사이트에서 사용자 정보를 클라이언트, 즉 사용자의 브라우저에 저장하는 방식입니다.
    예를 들어, 로그인 후 다음 방문 시 자동으로 로그인하거나 언어 설정을 기억하는 데 사용됩니다.
  • 세션은 웹사이트가 서버에 사용자 정보를 저장하는 방식입니다. 사용자마다 고유한 세션 ID가 만들어지고 서버는 이를 이용해 사용자 상태를 기억합니다.
    세션은 로그인 상태 유지처럼 보안이 중요한 작업에 자주 사용됩니다.

 

저장 위치

  • 쿠키클라이언트의 웹 브라우저에 저장됩니다. 브라우저의 메모리나 하드디스크에 간단한 텍스트 형식으로 보관됩니다.
  • 세션서버의 메모리에 저장됩니다. 서버에서만 관리하므로 보안이 더 높습니다.

 

만료 시점

  • 쿠키는 만료 시점을 직접 정할 수 있습니다.
    예를 들어, expires 옵션을 사용해서 쿠키가 언제 삭제될지 설정합니다. 만약 설정하지 않으면 브라우저가 종료될 때 자동 삭제됩니다.
  • 세션은 클라이언트가 로그아웃하거나 일정 시간(예: 30분) 동안 활동이 없으면 만료됩니다. 정확히 언제 만료될지 예측하기는 어렵지만 보통 설정 시간 동안 유지됩니다.

 

리소스 사용

  • 쿠키는 클라이언트 컴퓨터 자원(메모리나 하드디스크)을 사용하므로 서버 리소스를 사용하지 않습니다.
  • 세션은 서버에 저장되므로 세션이 많아지면 서버 메모리가 더 필요하게 됩니다.

 

용량 제한

  • 쿠키는 각 도메인(웹 사이트) 당 최대 20개 하나의 쿠키당 4KB까지 저장할 수 있습니다. 이 제한 덕분에 클라이언트의 메모리가 과도하게 사용되지 않습니다.
  • 세션은 서버에서 관리하므로 이론적으로 용량에 제한이 없습니다. 다만 너무 많은 세션이 서버에 쌓이면 성능 문제가 생길 수 있습니다.

 

보안 차이

  • 쿠키는 클라이언트에 저장되기 때문에 탈취(가로채기)나 변조 위험이 있습니다. 이를 막기 위해 암호화하거나 HTTP-Only 속성을 설정해 브라우저에서만 접근하도록 하는 것이 좋습니다.
  • 세션은 서버에서 관리되기 때문에 상대적으로 보안이 높습니다. 하지만 서버의 메모리를 차지하므로 너무 많은 세션이 쌓이면 성능에 영향을 줄 수 있습니다.

 

실제 사용 예시

  • 로그인 상태 유지: 세션을 사용하여 로그인 상태를 서버에서 관리하고, 특정 사용자가 로그인 상태인지를 확인합니다. 세션은 서버에서 관리되기 때문에 보안이 중요한 로그인 같은 상황에서 유용합니다.
  • 장바구니 기능: 쿠키를 사용하여 장바구니 정보를 브라우저에 저장해 사용자가 다음에 방문할 때도 상품이 장바구니에 남아있도록 할 수 있습니다. 이 경우 쿠키는 서버에 부담을 주지 않고 간단히 정보를 유지합니다.

 

💡요약
쿠키: 클라이언트에 저장됨, 텍스트 형식, 만료 설정 가능, 클라이언트 자원 사용, 용량 제한 있음, 보안 약함
세션: 서버에 저장됨, 객체 형식, 만료 시점 예측 어려움, 서버 자원 사용, 용량 제한 없음, 보안 강함