본문 바로가기
NETWORK

웹 애플리케이션 보안을 위한 쿠키 & 세션 관리 전략

by Rainbound-IT 2025. 9. 26.
반응형

웹 서비스 운영에서 **쿠키(Cookie)**와 **세션(Session)**은 사용자 경험과 보안을 동시에 책임지는 핵심 요소입니다. 로그인 상태 유지, 사용자 설정 저장, 서비스 연속성 보장 등 편리한 기능 뒤에는 반드시 보안 고려가 따라야 합니다. 이번 글에서는 쿠키와 세션의 원리, 보안 속성, 그리고 운영자가 꼭 챙겨야 할 체크리스트를 정리합니다.


1. 쿠키와 세션의 기본 원리

쿠키란?

쿠키는 서버가 브라우저에 내려주는 작은 데이터 조각입니다. 브라우저는 이를 저장했다가 같은 도메인에 요청을 보낼 때마다 자동으로 포함시킵니다.

  • 주요 역할: 사용자 식별, 세션 유지, 환경설정 저장
  • 예시:
  •  
    HTTP/1.1 200 OK Set-Cookie: sessionId=abc123; Path=/; HttpOnly; Secure

세션이란?

세션은 서버가 사용자의 상태 정보를 일정 시간 동안 기억하는 메커니즘입니다.

  • 보통 서버는 세션을 **저장소(DB, Redis 등)**에 기록하고, 브라우저에는 세션 ID만 쿠키로 내려줍니다.
  • 이후 브라우저가 요청 시 Cookie: sessionId=abc123을 자동 포함 → 서버가 해당 ID로 세션을 조회해 사용자 정보를 확인합니다.

즉, 쿠키는 세션을 이어주는 키(key) 역할을 한다고 볼 수 있습니다.


2. 쿠키 값이 사람이 읽기 어렵게 설계되는 이유

운영 환경의 쿠키를 보면 난수, Base64, 암호화된 값 등 사람이 읽기 어려운 문자열 형태가 많습니다. 이는 보안상의 이유입니다.

  • 민감정보 노출 방지: 평문 사용자 ID/권한을 쿠키에 저장하면 탈취 시 위험
  • 변조 방지: 쿠키를 조작해 권한 상승을 시도할 수 있음 → HMAC 서명, 암호화 필요
  • 보안 토큰화: 서버만 해독 가능한 세션 토큰을 활용하여 쿠키 자체는 무의미하게 설계

3. 세션 유지 방식의 패턴

1) 서버 사이드 세션 (권장)

  • 서버 저장소(예: Redis)에 sessionId → 사용자 정보 매핑 저장
  • 브라우저에는 난수 토큰(sessionId)만 저장
  • 장점: 서버에서 세션 무효화, 만료, 강제 로그아웃 제어 가능
  • 단점: 스케일링 시 세션 공유 저장소 필요

2) 클라이언트 토큰 방식 (JWT)

  • 서버가 사용자 정보를 담은 JWT(JSON Web Token)를 발급해 쿠키에 저장
  • 서버는 JWT 서명만 검증 → 빠름, 무상태 확장성 용이
  • 단점: Payload는 누구나 읽을 수 있어 민감정보 넣으면 위험, 만료·무효화 관리 어려움

3) Access + Refresh 토큰 혼합

  • 짧은 만료의 Access Token + 장기 Refresh Token 조합
  • 보안성과 UX를 균형 있게 가져갈 수 있는 현대적 접근

4. 쿠키 보안 속성 정리

  • Secure: HTTPS 연결에서만 전송
  • HttpOnly: JS 접근 차단 → XSS 방어
  • SameSite: CSRF 방지 (Strict, Lax, None)
  • Domain / Path 제한: 최소 범위로 지정해 남용 방지
  • 만료 시간: 오래 남지 않도록 TTL 설정
  • 쿠키 이름 프리픽스: __Secure-, __Host- 등 보안 속성 강제

5. 운영자가 꼭 알아야 할 세션 & 쿠키 보안 체크리스트

  • 쿠키에는 민감정보 저장 금지 (세션 토큰만)
  • 모든 쿠키에 Secure + HttpOnly + SameSite 적용
  • 세션 ID는 난수/암호화/서명 처리로 변조 방지
  • 로그인 시 세션 고정 방지를 위해 세션 재발급
  • 로그아웃 시 서버 측 세션 무효화 처리
  • 세션 만료시간 짧게 설정 + 주기적 갱신 정책 운영
  • Redis 같은 중앙 세션 저장소 구성(스케일링 대비)
  • WAF 로그에서 REQUEST_COOKIES 매칭 탐지 모니터링

6. 결론

쿠키와 세션은 사용자 경험을 만드는 동시에 공격자가 노리는 대표적인 타깃입니다.

  • 쿠키는 세션을 이어주는 키,
  • 세션은 서버가 사용자를 기억하는 메커니즘입니다.

운영자는 “쿠키는 읽히지 않고, 변조되지 않고, 오래 남지 않는다”는 원칙을 지키는 것만으로도 보안 수준을 크게 높일 수 있습니다.

반응형

댓글