도구 및 기타/개발상식

쿠키(Cookie), 세션(Session), 그리고 로컬 스토리지(Local Storage)

tero1115 2024. 11. 13. 11:35

웹 개발을 하다 보면 쿠키(Cookie), 세션(Session), 로컬 스토리지(Local Storage)를 사용하는 경우가 많습니다. 이 세 가지는 모두 클라이언트와 서버 간의 상태를 유지하거나 데이터를 저장하는 방식이지만, 각기 다른 특성과 사용 목적이 있습니다.

 

1. 쿠키(Cookie)

쿠키웹사이트가 사용자의 브라우저에 저장하는 작은 데이터 조각입니다. 서버가 사용자 브라우저에 쿠키를 생성해 저장하면, 이후 요청마다 브라우저는 해당 쿠키를 함께 전송하여 사용자를 식별할 수 있습니다.

  • 주요 특징:
    • 주로 로그인 정보나 사용자 선호 설정 등을 저장합니다.
    • 만료 시간을 설정할 수 있으며, 지정된 시간이 지나면 자동으로 삭제됩니다.
    • 용량이 작으며, 브라우저당 약 4KB로 제한됩니다.
    • HTTP 요청마다 쿠키가 자동으로 전송되기 때문에 보안과 성능에 주의가 필요합니다.
  • 사용 예시: 로그인 상태 유지, 사용자 맞춤 설정 유지, 장바구니 정보 저장 등.

 

2. 세션(Session)

세션서버에 사용자 정보를 저장하여 사용자가 웹사이트를 방문하는 동안 특정 상태를 유지하도록 하는 방식입니다. 세션은 클라이언트가 서버에 접속한 동안만 유지되며, 브라우저를 닫거나 일정 시간이 지나면 자동으로 만료됩니다.

  • 주요 특징:
    • 서버에서 관리되는 데이터이기 때문에 보안성이 높습니다.
    • 쿠키와 달리 클라이언트가 직접 접근할 수 없어 민감한 정보 관리에 유리합니다.
    • 세션 ID만 클라이언트 측에 저장하고, 실제 데이터는 서버에 저장됩니다.
    • 일정 시간 동안 사용자 활동이 없으면 세션이 만료될 수 있습니다.
  • 사용 예시: 로그인 인증 상태, 장바구니 관리, 사용자 정보 유지 등.

 

3. 로컬 스토리지(Local Storage)

로컬 스토리지브라우저에 영구적으로 데이터를 저장할 수 있는 공간입니다. 한 번 저장된 데이터는 사용자가 브라우저 데이터를 지우기 전까지 지속됩니다. 로컬 스토리지는 클라이언트 측에서만 접근할 수 있어 서버와의 통신 없이 데이터를 저장할 때 유용합니다.

  • 주요 특징:
    • 용량이 크다: 브라우저마다 다르지만, 일반적으로 약 5MB 이상의 데이터를 저장할 수 있습니다.
    • 유효 기간이 없다: 사용자가 직접 삭제하기 전까지 데이터가 유지됩니다.
    • 동기적 처리: 로컬 스토리지는 동기적으로 작동하므로 대량의 데이터를 저장하거나 호출할 때 성능에 주의해야 합니다.
    • 보안에 주의: 브라우저에서 직접 접근 가능하므로, 민감한 정보는 암호화 없이 저장하지 않는 것이 중요합니다.
  • 사용 예시: 사용자 설정 저장(테마, 언어 등), 캐싱 데이터, 애플리케이션 상태 저장 등.

 

쿠키, 세션, 로컬 스토리지 비교

특징 쿠키(Cookie) 세션(Session) 로컬 스토리지(Local Storage)
저장 위치 클라이언트(브라우저) 서버 클라이언트(브라우저)
데이터 유효 기간 설정 가능 브라우저 종료 또는 일정 시간 후 만료 사용자가 삭제할 때까지
주요 목적 로그인 상태, 사용자 식별 로그인 인증 상태, 민감 데이터 관리 설정 저장, 캐싱 데이터
용량 약 4KB 제한 없음(서버에 저장) 약 5MB 이상
보안성 낮음 상대적으로 높음 낮음
서버 요청 시 전송 자동으로 포함 서버가 직접 참조 전송되지 않음

 

언제 사용해야 할까?

  • 쿠키: 로그인 상태나 사용자 식별이 필요할 때 주로 사용합니다. 다만, 보안에 주의해야 합니다.
  • 세션: 민감한 데이터가 포함된 인증 정보나 사용자 상태를 서버에서 관리하고자 할 때 유리합니다.
  • 로컬 스토리지: 사용자 설정을 유지하거나, 서버와 상관없이 브라우저에 데이터를 저장할 때 좋습니다. 하지만 보안에 주의해야 합니다.

 

마무리

쿠키, 세션, 로컬 스토리지는 각기 다른 특성과 목적을 가지고 있습니다. 웹 애플리케이션에서 데이터를 저장하거나 인증을 관리할 때 상황에 맞게 잘 선택하여 사용하는 것이 중요합니다. 예를 들어, 로그인 인증에는 보안이 중요한 세션을, 사용자 맞춤 설정에는 로컬 스토리지를, 그리고 상태 식별에는 쿠키를 사용할 수 있습니다.