Node.js

Node.js ) 쿠키와 세션

Hweb 2024. 10. 18. 10:06

쿠키와 세션으로 로그인 기능을 구현한다.

 

쿠키는 파일에 저장하고 보안에 취약

세션은 논리적으로 연결함

둘다 명령어는 거의 같지만 구현방법에서 약간 다름

쿠키는 발행주체, 생성, 파괴를 프론트엔드가 함.  백엔드는 허락, 확인

 

쿠키와 세션

1. 쿠키 (Cookie)

  • 클라이언트 측 저장: 쿠키는 사용자의 웹 브라우저에 저장됩니다. 서버가 클라이언트에게 쿠키를 설정하고, 클라이언트는 이후 요청 시마다 해당 쿠키를 서버에 전송합니다.
  • 주로 사용되는 목적: 로그인 상태 유지, 사용자 선호 설정 저장, 세션 ID 저장 등. 예를 들어, 사용자가 "로그인 상태 유지"를 선택하면, 브라우저에 토큰이나 세션 ID를 쿠키로 저장해 사용자가 사이트를 다시 방문할 때마다 로그인 상태를 유지할 수 있게 합니다.
  • 만료 시간 설정 가능: 쿠키는 만료 날짜를 설정할 수 있습니다. 따라서 브라우저를 닫아도 쿠키가 유지될 수 있으며, 서버에서 사용자 인증 상태를 확인할 때 활용됩니다.

2. 세션 (Session)

  • 서버 측 저장: 세션은 서버에 저장되는 사용자 정보를 기반으로 상태를 유지합니다. 사용자가 로그인할 때 서버는 고유한 세션 ID를 생성하고, 이를 쿠키에 담아 클라이언트에 전달합니다. 이후 클라이언트는 요청마다 이 세션 ID를 서버에 전송하여 사용자 인증을 수행합니다.
  • 주로 사용되는 목적: 로그인 상태 관리, 사용자 데이터 유지, 서버 측 보안 관리. 세션은 서버에서 관리되므로 민감한 정보를 저장하는 데 더 안전합니다.
  • 세션 만료: 세션에는 만료 시간이 설정되어 있어, 일정 시간이 지나면 자동으로 로그아웃됩니다. 이로 인해 일정 시간 동안 활동이 없을 때 보안을 강화할 수 있습니다.

쿠키와 세션의 차이점

  • 저장 위치: 쿠키는 클라이언트(브라우저)에 저장되고, 세션은 서버에 저장됩니다.
  • 보안: 세션은 서버에서 관리되기 때문에 민감한 데이터를 안전하게 유지할 수 있습니다. 쿠키는 클라이언트에 저장되므로 민감한 정보를 저장할 때 주의해야 합니다.
  • 유효 기간: 쿠키는 명시적인 만료 시간이 설정될 수 있지만, 세션은 서버 측에서 관리되며 기본적으로 브라우저가 닫히면 만료됩니다(서버 설정에 따라 다름).

 

쿠키를 왜 쓰나?

쿠키는 보안 측면에서 민감한 정보를 저장하는 데는 적합하지 않지만, 특정 상황에서는 유용한 장점이 있어 여전히 널리 사용됩니다. 주요 이유는 다음과 같습니다:

1. 사용자 경험 개선

  • 로그인 상태 유지: 사용자가 "로그인 상태 유지"를 선택하면, 쿠키에 로그인 토큰이나 사용자 ID 같은 정보를 저장해 사용자가 사이트를 재방문할 때마다 로그인 상태를 자동으로 유지할 수 있습니다.
  • 사용자 설정 저장: 쿠키를 이용해 사용자의 선호도나 설정(예: 언어, 테마 등)을 저장할 수 있습니다. 이를 통해 사용자가 사이트를 방문할 때마다 동일한 환경을 제공할 수 있습니다.
  • 장바구니 기능: 전자상거래 사이트에서 장바구니 정보가 쿠키에 저장되어 사용자가 다른 페이지로 이동하거나 브라우저를 닫았다가 다시 열어도 장바구니가 유지됩니다.

2. 클라이언트와 서버 간의 상태 유지

  • HTTP는 본래 상태를 유지하지 않는(stateless) 프로토콜입니다. 쿠키는 이를 보완하여 사용자가 이전에 어떤 페이지를 방문했는지, 어떤 작업을 했는지 등의 정보를 저장해 상태를 유지할 수 있도록 합니다.
  • 예를 들어, 사용자가 로그인한 후 쿠키에 세션 ID를 저장하면, 이후 요청마다 해당 세션 ID를 서버에 보내서 사용자 인증을 처리할 수 있습니다.

3. 서버 부하 감소

  • 클라이언트 측 데이터 저장: 쿠키를 사용하면 일부 데이터를 클라이언트에 저장할 수 있기 때문에 서버 측에서 상태를 지속적으로 유지하고 관리할 필요가 줄어듭니다.
  • 예를 들어, 방문 카운트나 마지막 방문 시간과 같은 정보를 서버가 아닌 쿠키에 저장함으로써 서버 자원을 아낄 수 있습니다.

4. 광고 및 분석 목적

  • 트래킹: 광고나 웹사이트 분석에서 사용자가 어떤 페이지를 방문했는지 추적하기 위해 쿠키가 사용됩니다. 이를 통해 사용자의 웹사이트 사용 패턴을 분석하고, 맞춤형 광고를 제공할 수 있습니다.

보안 문제와 해결 방법

  • 보안 문제: 쿠키가 클라이언트에 저장되므로 악의적인 공격자에 의해 탈취되거나 변조될 가능성이 있습니다. 예를 들어, XSS(크로스 사이트 스크립팅) 공격을 통해 쿠키 정보를 훔칠 수 있습니다.
  • 해결 방법: 쿠키의 HttpOnly 및 Secure 속성을 설정하고, 중요한 정보는 쿠키에 직접 저장하지 않으며, 대신 토큰화하거나 세션 ID를 사용해 서버 측에서 인증을 관리합니다.

 

반응형