웹
Session 개념 정리
일렉멍멍이
2025. 8. 4. 22:59
Session이란?
Session은 서버가 생성한 세션 ID를 통해 사용자의 인증 정보를 서버 저장소에 보관하고 관리하는 인증 방식이다.
Session의 특징
- 세션은 단일 서버에서 운영되는 서비스나 실시간으로 사용자의 상태를 관리해야 하는 서비스에 적합하다.
- 서버에서 생성된 특수한 ID 값의 세션 ID가 클라이언트의 쿠키에 저장된다.
- 클라이언트에서 세션 ID와 함께 요청을 보내어 서버가 사용자를 식별할 수 있다.
- 세션 인증 정보 데이터는 서버에 저장된다(Stateful).
- 서버 저장소에 세션 정보를 보관하므로, 로그아웃이나 권한 변경 시 즉시 반영할 수 있다.
- 세션 만료 또는 삭제 시, 해당 사용자의 인증 상태를 즉시 무효화할 수 있다.
- 세션은 인증 정보를 서버에서 보관하므로, 클라이언트 측의 세션 ID만으로는 정보가 노출되거나 위변조되지 않는다.
Stateful은 서버가 사용자의 인증 정보를 정하는 것을 의미한다.
Session은 인증 정보를 서버가 저장하므로 Stateful에 해당한다.
Session의 문제점
- 공격자가 세션 ID가 탈취하여 사용자인 것처럼 요청을 보낼 수 있다(세션 하이재킹).
- 서버 메모리에 저장하기 때문에 서버 재시작 시 세션이 모두 사라진다.
- 세션 정보를 서버 메모리에 저장하여 서버를 수평적 확장(Horizontal Scaling)이 어렵다.
개선된 Session 관리 방법
- 세션 하이재킹을 막기 위해 HTTPS 적용과 세션 ID 주기적 갱신 등 보안 대책을 적용한다.
- DB나 Redis 등 중앙 저장소를 사용하면 여러 서버가 세션을 공유하도록 하여 수평적 확장(Horizontal Scaling)이 가능하도록 한다.
- 로그인 시마다 새로운 세션 ID를 발급하여 세션 고정 공격(Session Fixation)을 방지한다.
별도의 인증 서버를 활용한 세션 인증
- 대규모 시스템이나 마이크로서비스 환경에서는 인증 전용 서버를 별도로 두고, 각 서비스(API 서버 등)는 인증 서버에 세션 ID를 전달해 인증 정보를 받아오는 구조를 사용할 수 있다.
- 이 방식은 인증 로직의 중앙 집중화, 서비스 간 인증 일관성 유지, 보안 관리의 효율성 등의 장점이 있다.
반응형