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) | 서버 자원 내에서 비교적 큼 |
인증과 인가
- 인증: 사용자 신원 확인 (로그인).
- 인가: 사용자의 권한 확인 (접근 권한 결정). 인증 후 진행.
세션 관리 시 고려 사항
- 최소한의 데이터만 저장하여 서버 자원 효율성 확보.
- 적절한 세션 유효 시간 설정.