4월 19일-쿠키와 세션

Yullgiii·2024년 4월 19일
0
post-thumbnail

쿠키와 세션의 차이

쿠키 (Cookies)

쿠키는 클라이언트 측에서 정보를 저장하는 작은 데이터 조각들이다. 웹서버가 사용자의 웹 브라우저에 전송하며, 이 데이터는 사용자가 다시 해당 서버에 접속할 때마다 브라우저에 의해 서버로 다시 전송된다. 쿠키는 사용자의 로그인 상태, 프로필 정보, 기타 개인화 설정 등을 저장하는 데 사용된다. 쿠키는 보안상의 이유로 서버가 직접 접근할 수 없으며, HTTPS와 같은 보안 채널을 통해 암호화된 상태로 전송될 수 있다.

세션 (Sessions)

세션은 서버 측에서 사용자 정보를 저장한다. 세션 ID는 쿠키를 통해 클라이언트에 저장될 수 있으며, 이 ID를 통해 서버는 각각의 사용자에 대한 세션 정보에 접근할 수 있다. 세션은 사용자가 로그인하고 서버에 연결된 상태를 유지하는 데 사용된다. 세션은 쿠키보다 보안이 더 강력하지만, 서버의 메모리를 사용하기 때문에 많은 수의 사용자가 동시에 접속하는 경우 서버의 부하가 증가할 수 있다.

세션 방식의 로그인 과정

  1. 사용자 인증: 사용자가 로그인 폼에 자신의 아이디와 비밀번호를 입력한다.
  2. 서버 검증: 서버는 제공된 자격 증명을 검증하고, 올바른 경우 사용자에 대한 세션을 생성한다. 이 세션에는 사용자의 로그인 상태, 권한 수준, 프로필 정보 등이 저장될 수 있다.
  3. 세션 ID 발급 및 저장: 서버는 생성된 세션에 대한 고유한 ID를 생성하고, 이 ID를 쿠키에 저장하여 클라이언트에 전송한다.
  4. 클라이언트 쿠키 저장: 클라이언트(브라우저)는 받은 세션 ID를 쿠키에 저장한다.
  5. 후속 요청에서 인증 사용: 사용자가 이후 요청을 보낼 때마다 브라우저는 세션 ID를 포함한 쿠키를 서버에 함께 전송한다. 서버는 이 세션 ID를 확인하여 사용자의 로그인 상태 및 권한을 검증하고 요청에 응답한다.

HTTP의 Stateless 특성

HTTP 프로토콜은 본질적으로 Stateless, 즉 상태가 없는 프로토콜이다. 이는 각 요청이 독립적으로 처리되며, 이전의 요청 상태를 기억하지 않는다는 것을 의미한다. 이러한 특성은 웹 서버가 많은 수의 클라이언트와 효율적으로 통신할 수 있도록 도와주지만, 사용자의 로그인 상태나 행동을 추적하기 어렵게 만든다.

대규모 세션 관리

서버가 여러 개 있는 대규모 시스템에서 세션을 관리하는 일반적인 방법은 세션 정보를 중앙 집중화된 세션 저장소(예: 레디스, 멤캐시드)에 저장하는 것이다. 이러한 저장소는 모든 서버가 접근할 수 있으며, 사용자의 세션 ID만으로 필요한 모든 정보를 검색할 수 있다. 이는 로드 밸런싱과 서버 간 세션 동기화를 가능하게 하여, 어느 서버로 요청이 들어오더라도 일관된 사용자 인증 상태를 제공한다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글