엘리스트랙

쿠키와 세션 복습!

Zmann 2024. 2. 9. 13:26
728x90

 

 

 

 

쿠키

쿠키는 클라이언트 측에서 서버로 보내는 작은 데이터 조각입니다. 웹 서버가 사용자의 웹 브라우저에 보내는 작은 텍스트 파일로, 사용자의 컴퓨터에 저장되며 웹 브라우저를 통해 접근하고 업데이트됩니다.

 

쿠키의 구조

  • 이름: 쿠키의 이름입니다.
  • 값: 쿠키의 값을 나타냅니다.
  • 만료 날짜: 쿠키가 만료되는 날짜나 시간입니다. 이 값이 설정되지 않으면 브라우저가 닫힐 때 쿠키가 삭제됩니다.
  • 경로: 쿠키가 유효한 URL을 지정합니다. URL이 이 경로를 포함하지 않으면 쿠키는 보내지지 않습니다.
  • 도메인: 쿠키가 유효한 도메인을 지정합니다. 이 도메인이 쿠키를 설정한 도메인과 일치하지 않으면 쿠키는 보내지지 않습니다.
  • Secure: 이 플래그가 설정되면, 쿠키는 HTTPS를 통해서만 전송됩니다.

 

쿠키의 사용

  • 세션 관리: 로그인, 장바구니, 게임 점수, 또는 서버가 기억해야 할 어떤 정보든 저장할 수 있습니다.
  • 개인화: 사용자 선호, 테마 등의 설정을 저장하여 사용자에게 맞춤형 콘텐츠를 제공할 수 있습니다.
  • 추적: 사용자의 행동이나 방문한 페이지 등을 기록하고 분석할 수 있습니다.

 

쿠키의 보안

  • Secure 쿠키: Secure 플래그가 설정된 쿠키는 HTTPS를 통해서만 전송됩니다. 이는 쿠키가 네트워크 상에서 도난당하는 것을 방지해줍니다. 즉, 쿠키 정보가 암호화된 연결을 통해서만 전송되므로 중간자 공격(man-in-the-middle attack)으로부터 안전합니다.
  • HttpOnly 쿠키: HttpOnly 플래그가 설정된 쿠키는 JavaScript의 Document.cookie API를 통해 접근할 수 없습니다. 이는 쿠키가 크로스 사이트 스크립팅(XSS) 공격으로부터 안전하게 보호되도록 합니다.
  • SameSite 쿠키: SameSite 속성은 쿠키가 같은 사이트에서만 전송되도록 합니다. 이는 크로스 사이트 요청 위조(CSRF) 공격을 방지하는 데 도움이 됩니다.
  • 쿠키의 만료 시간 설정: 쿠키에 만료 시간을 설정함으로써, 쿠키의 생명 주기를 제한할 수 있습니다. 이는 오래된 쿠키가 공격자에게 노출되는 것을 방지하는 데 도움이 됩니다.
  • 쿠키 값의 암호화: 쿠키 값이 민감한 정보를 포함하고 있는 경우, 이 정보를 암호화하여 보호할 수 있습니다.

 

세션

세션은 서버에서 클라이언트를 식별하기 위해 사용하는 기술입니다. 클라이언트가 서버에 연결하면 서버는 고유한 세션 ID를 생성하고 클라이언트에게 전달합니다. 클라이언트는 이후 요청에서 이 세션 ID를 함께 보내어 자신을 식별합니다. 이를 통해 서버는 클라이언트의 상태 정보를 유지할 수 있습니다.

 

세션의 사용

클라이언트는 이후 요청에서 세션 ID를 함께 보내어 자신을 식별합니다. 서버는 이 세션 ID를 통해 클라이언트의 세션을 찾아 사용자의 상태 정보를 유지합니다. 예를 들어, 사용자의 로그인 상태, 장바구니 항목, 게임 점수 등을 저장할 수 있습니다.

 

 

세션의 보안

  • 세션 고정 공격(Session Fixation) 방지: 세션 고정 공격은 공격자가 피해자의 세션 ID를 고정하여 그 세션을 탈취하는 공격입니다. 이를 방지하기 위해, 로그인 이후에 새로운 세션 ID를 발급하는 것이 일반적입니다.
  • 세션 탈취(Session Hijacking) 방지: 세션 탈취는 공격자가 네트워크 트래픽을 감시하여 피해자의 세션 ID를 탈취하는 공격입니다. 이를 방지하기 위해, 세션 ID를 HTTPS와 같은 안전한 채널을 통해 전송하는 것이 중요합니다.
  • 세션 ID의 안전한 생성: 세션 ID는 무작위로, 예측할 수 없도록 생성해야 합니다. 이를 통해 공격자가 세션 ID를 예측하여 세션을 탈취하는 것을 방지할 수 있습니다.
  • 세션의 안전한 저장: 서버는 세션 정보를 안전하게 저장해야 합니다. 예를 들어, 서버의 메모리나 데이터베이스 등 안전한 곳에 세션 정보를 저장하고, 필요한 경우 세션 정보를 암호화하여 저장합니다.
  • 세션의 만료: 세션은 사용자가 로그아웃하거나 일정 시간 동안 활동이 없는 경우 만료되어야 합니다. 이를 통해 공격자가 오래된 세션을 이용하는 것을 방지할 수 있습니다.

 

쿠키와 세션 차이

  • 저장 위치: 쿠키는 클라이언트(브라우저)에 저장되는 반면, 세션은 서버에서 관리됩니다.
  • 생명 주기: 쿠키는 만료 시간이 명시적으로 설정되지 않으면 브라우저가 종료될 때까지 유지되며, 만료 시간이 설정된 경우 해당 시간이 지나면 삭제됩니다. 세션은 브라우저가 종료되면 종료되거나, 서버에서 세션 타임아웃 시간이 지나면 만료됩니다.
  • 보안: 쿠키는 클라이언트에 저장되므로 민감한 데이터를 저장하기에는 보안상 취약할 수 있습니다. 반면, 세션은 서버에서 관리되므로 보안성이 더 높습니다. 하지만 세션은 서버의 메모리를 사용하므로, 많은 사용자가 접속하는 경우 서버의 부하를 증가시킬 수 있습니다.
  • 사용 예시:
    쿠키는 '로그인 상태 유지', '사용자의 관심사에 맞는 광고 표시', '최근 조회한 상품 정보 저장' 등에 사용됩니다.
    세션은 로그인한 사용자의 정보를 저장하거나, 사용자별 장바구니 정보를 유지하는 등의 목적으로 사용됩니다.

 

 

 

 

728x90