쿠키와 세션

유지원·2022년 5월 18일
1

(인프런) 반드시 알고 넘어가야 할 웹 기술 기초편 을 보고 정리한 내용입니다.

GITHUB로 보고싶다면?


상태 유지 및 관리의 필요성

  • 최초의 웹은 단순히 문서를 전달 받고 정보를 공유하는 목적으로 사용되었으며, 이 경우에는 상태 유지 및 관리가 굳이 필요하지 않음.
  • 오늘날의 웹은 쇼핑몰에서 원하는 상품을 장바구니 혹은 카트에 담고 쇼핑이 완료되면 결제하고 결제가 완료되면 정상적으로 결제가 되었는지 확인을 하며, 예상 도착일을 봄. 또한, 한번의 로그인을 통해 다른 페이지 접근 시 나에 대한 상태 정보가 유지됨.
  • 이러한 상태 유지 및 관리를 위해서는 쿠키가 사용됨. (상태 유지 및 관리, 사용자 인증 수단)

  • 쿠키를 통해 사용자 식별 및 세션 유지를 통해 클라이언트와 서버 간의 상태 관리를 함.
  • 종류.
    • 지속 쿠키 (Persistent Cookie) : (일반적으로 말하는) 쿠키
    • 세션 쿠키 (Session Cookie) : (일반적으로 말하는) 세션.

쿠키 헤더 구조

  • 서버에서 클라이언트로 쿠키 발급 시 Set-Cookie 헤더에 의해 클라이언트 쿠키 값이 세팅됨.
  • 해당 사이트 접근 시 마다 클라이언트는 Set-Cookie에 의해 세팅된 값을 Cookie 헤더에 세팅하여 요청 메시지를 전달함.
  • 서버를 이를 통해 상태 관리를 함.

  • 웹 서버에서 발급 시 클라이언트 하드 디스크에 텍스트 형태로 저장.
  • 클라이언트 PC 사용자들은 해당 쿠키 정보를 열람할 수 있음.
  • 문제점.
    • 쿠키를 폐기 하여도 해당 값을 알고 있으면 재사용이 가능한 문제점. 즉, 폐기 후에도 재사용이 가능함.
    • 쿠키 값이 평문일 경우 변조의 위협이 있기 때문에 사용자 식별 및 인증 관리를 할 경우 반드시 암호화 과정을 거쳐야 함.
    • 쿠키의 유효기간에 따른 폐기 방법, 암호화 알고리즘에 대한 적절성 등을 잘 검토하여 쿠키 발급 로직을 구현해야 함.
  • 개발자가 쿠키 발급 로직 구현 시.
    • 쿠키의 유효기간 처리는 어떻게 할 것인가?
    • 양방향 암호화 알고리즘은 어떤 것을 사용할 것이며, 비밀 키는 어떻게 보관할 것인가?

  • 웹 서버에서 발급 시 클라이언트 웹 브라우저 캐시에 저장됨.
  • 정상적으로 로그인 시 웹 어플리케이션 서버는 서버 측에 해당 세션에 대한 정보를 저장함.
  • 서버에서 세션을 저장하는 방법 : 메모리, 파일 시스템, 데이터베이스에 저장하는 방법 등.
  • 문자가 암호화, 난독화 되어있는 형태가 아닌 임의의 문자들이 무작위로 나열된 것으로 공격자 측에서는 특정 사용자의 세션을 추측하기는 어려움.

지속 쿠키의 필요성

  • 세션 쿠키를 사용하면 보안 담당자, 개발자들이 편함.
  • 대규모 웹 서비스의 경우 수 많은 사용자들의 세션을 관리하기에는 서버에 엄청난 부하를 가져옴.
  • 서버에 부담이 낮은 지속 쿠키 사용을 많이 선호함.
  • 웹 서비스 규모와 인프라 구성에 알맞게 사용해야 함.
profile
👋 https://github.com/ujw0712

0개의 댓글