Skip to content

Latest commit

 

History

History
72 lines (66 loc) · 4.76 KB

쿠키와 세션에 대해 설명해주세요..md

File metadata and controls

72 lines (66 loc) · 4.76 KB

사용자 인증 및 상태 관리에 활용

  • 클라이언트는 쿠키를 통해 세션 식별자를 저장
  • 서버는 세션을 통해 사용자의 상태나 인증 정보를 더 안전하게 관리

쿠키Cookie

개념

  • 클라이언트가 방문한 웹사이트에서 서버를 통해 클라이언트의 로컬 브라우저에 저장되는 데이터
  • Key-Value 형식의 쌍으로 구성된 문자열

사용 목적

  • 세션 식별, 사용자 설정, 트래킹 등
  • 각 사용자마다 브라우저에 고유 정보를 저장해두고 사용자를 식별

특징

1. 유지 기간 Expiration

  • 만료 날짜를 가지고 있어 특정 기간 동안 유지되었다가, 만료 날짜가 지나면 브라우저에서 자동으로 삭제
  • 만료 시점: expiresmax-age 속성으로 설정
    • 만료 시점을 설정하지 않으면 기본적으로 브라우저가 종료될 때 삭제

2. 도메인 및 경로 제한

  • 특정 도메인과 경로를 제한하여 쿠키를 사용할 수 있는 페이지를 제어
  • 요청한 도메인의 경로와 쿠키의 Domain 속성이 일치하지 않으면 쿠키에 접근 방지
    • Domain 속성을 입력하지 않으면 현재 도메인의 경로로 자동 설정

3. 용량 제한 및 네트워크 부하 유발

  • 일반적으로 도메인 하나당 20개의 쿠키 저장 가능
  • 쿠키 당 최대 저장 용량: 4KB로 제한
  • 클라이언트가 요청을 보낼 때마다 요청 헤더에 보내지므로 쿠키의 사이즈가 커질수록 네트워크 부하 유발

4. 보안 취약

  • 요청 시 그대로 보내져 유출 및 조작의 위험으로 보안에 취약

세션

개념

  • 서버에서 클라이언트 상태를 저장하기 위한 객체

사용 목적

  • 쿠키의 보안 문제로 쿠키에는 클라이언트를 식별할 수 있는 고유 식별자(Session ID)만 저장
  • 사용자의 민감한 인증 정보는 서버 측에 저장 (ex. 비밀번호)

형식

  • 클라이언트 고유 식별자를 Key로, 해당 클라이언트에 대한 정보를 Value로 구성되는 객체 형태로 저장
    • 클라이언트 정보 Map 형태로 구성 (ex. 세션 생성 시간, 마지막 접근 시간, 사용자 정보 등)

특징

1. 보안 강화

  • 서버에 중요 정보 안전하게 저장: 세션 정보는 서버에 저장, 클라이언트에는 세션 식별자만 저장
  • 클라이언트의 Session ID를 탈취하여 요청할 수 있어 서버에서 IP를 제한하여 보안 강화 필요

2. 유효 시간

  • 세션은 일정 기간 동안 유지
  • 클라이언트의 활동이 없을 때 서버 측에서 세션 정보 만료

3. 저장 용량

  • 서버 측에서 관리하므로 일반적으로 쿠키보다 더 많은 데이터를 저장 가능

쿠키-세션 인증 방식

인증 과정

  1. 사용자가 웹사이트에 로그인
  2. 서버는 해당 사용자에 대한 새로운 세션을 생성, 고유한 식별자를 클라이언트에게 제공
    • 세션은 서버의 메모리, 로컬 파일, 데이터베이스 등 원하는 위치에 저장
    • 서버는 고유 식별자(Session ID)를 Response Header의 Set-Cookie로 설정
  3. 이후 해당 클라이언트는 요청을 보낼 때마다 매번 저장된 쿠키를 Request Header의 Cookie로 전달
  4. 인증: 서버는 쿠키에 담긴 정보를 바탕으로 클라이언트를 식별하여 세션을 이용하여 인증 수행

문제점

1. 서버 리소스 부담

  • 서버에서 세션 정보를 관리하고 조회해야 하기 때문에 많은 오버헤드가 발생

2. 상태 관리 필요 (Stateful)

  • 클라이언트 상태를 서버 측에 저장하여 계속해서 유지해놓고 사용 필요 (ex. 사용자의 인증 정보 등)
  • 단점: 사용자가 증가하여 요청이 많아지면 세션 정보 저장 시 서버 부하로 인한 성능 문제, 낮은 확장성
  • 해결 방안: 세션 기반 인증 방식의 단점을 극복하기 위한 토큰 기반 인증 방식 등장

관련 질문

  • 쿠키와 세션의 차이점을 설명해주세요.
  • 세션이 보안이 좋은데도 쿠키를 사용하는 이유가 무엇인가요?
  • 쿠키의 사용 예시를 말씀해주세요.
  • 쿠키와 세션을 이용한 인증 방식을 설명해주세요.

참고 자료