T_era

Cookie와 Session 본문

Programing/Spring

Cookie와 Session

블스뜸 2025. 5. 15. 11:36

Cookie

  • 정의: 웹 브라우저에 저장되는 작은 데이터 조각.
  • 생명주기: 세션 쿠키 (브라우저 종료 시까지), 영속 쿠키 (만료일 설정 가능).
  • 도메인: Cookie가 적용될 웹사이트 범위 지정.
  • 보안:
    • Secure: HTTPS에서만 전송.
    • HttpOnly: JavaScript 접근 차단 (XSS 방지).
    • SameSite: 요청 도메인과 Cookie 도메인 일치 시 전송 (CSRF 방지).
  • 사용 예시: 로그인 상태 유지 (userId Cookie 생성 및 활용), 로그아웃 시 Cookie 만료.

Session

  • 정의: 서버 측에서 사용자 상태를 유지하는 방식.
  • 동작: 로그인 성공 시 서버가 Session ID를 생성하여 Cookie로 클라이언트에게 전달. 클라이언트는 매 요청 시 Session ID Cookie를 서버에 전송하여 서버가 사용자 상태를 식별.
  • 특징: 민감 정보 서버 저장, Session ID 탈취 대비 안전, 유효 시간 설정 가능.
  • 사용 예시: 로그인 정보 서버에 저장 (HttpSession 활용, session.setAttribute), 로그아웃 시 세션 무효화 (session.invalidate).
  • 세션 정보: ID, 유효 시간, 생성 시간, 마지막 접근 시간 등 확인 가능.
  • 문제점: 서버 메모리 사용, 동시 사용자 증가 시 부담, 서버 간 세션 공유 어려움 (Scale Out).
  • 생명주기: 마지막 접근 시간을 기준으로 일정 시간(기본 30분) 동안 활동 없으면 만료.

쿠키 vs 세션

특징쿠키(Cookie)세션(Session)
저장 위치 클라이언트 (브라우저) 서버
보안 비교적 취약 비교적 안전
수명 명시적 설정 또는 브라우저 종료 서버 설정 시간 또는 브라우저 종료
용량 작음 (약 4KB) 서버 자원 내에서 비교적 큼

인증과 인가

  • 인증: 사용자 신원 확인 (로그인).
  • 인가: 사용자의 권한 확인 (접근 권한 결정). 인증 후 진행.

세션 관리 시 고려 사항

  • 최소한의 데이터만 저장하여 서버 자원 효율성 확보.
  • 적절한 세션 유효 시간 설정.