로그인 처리 시 쿠키와 세션은 사용자 인증 상태를 유지하는 데 함께 사용된다
일반적인 흐름은
1. 로그인 과정
- 사용자가 로그인 폼에 아이디와 비밀번호를 입력하여 로그인 요청
- 서버가 사용자의 아이디와 비밀번호를 검증
- 이 과정에서 데이터베이스나 다른 인증 서비스를 통해 제공된 정보의 유효성을 확인
- 인증이 성공하면, 서버는 사용자에 대한 고유한 세션 ID를 생성
- 이 세션 ID는 서버에 저장되며, 사용자와 관련된 세션 데이터(예: 사용자 아이디, 권한 등)를 포함
- 서버는 생성된 세션 ID를 쿠키에 저장하여 클라이언트(브라우저)로 전송하며, 이 쿠키는 일반적으로 Set-Cookie HTTP 헤더를 통해 클라이언트에게 전달됨
2. 세션 유지 및 인증 상태 관리
- 클라이언트는 서버로부터 받은 쿠키를 저장하고, 이후 서버로 요청을 보낼 때마다 이 쿠키를 HTTP 요청 헤더에 포함시켜 전송
- 서버는 HTTP 요청 헤더에서 세션 ID를 포함한 쿠키를 읽고, 해당 세션 ID와 매칭되는 서버 측 저장소의 세션 데이터를 조회
- 세션 데이터를 통해 사용자의 인증 상태와 권한을 확인하고, 요청에 대한 적절한 응답을 제공
- 사용자가 로그아웃하면 서버는 해당 세션 ID를 무효화하고, 클라이언트는 쿠키를 삭제
보안 고려사항
- 세션 하이재킹
- 공격자가 사용자의 세션 ID를 탈취하여 그 사용자처럼 행동할 수 있음
- HTTPS 사용, 쿠키의 Secure 플래그 설정, 세션 ID의 정기적 갱신 등을 통해 위험을 줄일 수 있음
- CSRF(교차 사이트 요청 위조)
- 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행동을 하게 만드는 공격
- CSRF 토큰 사용 등을 통해 방어할 수 있음
- 쿠키의 HttpOnly 플래그
- XSS(교차 사이트 스크립팅) 공격으로부터 쿠키를 보호하기 위해, 쿠키에 HttpOnly 플래그를 설정하여 JavaScript를 통한 접근을 차단할 수 있음
쿠키와 세션을 사용한 로그인 처리는 사용자의 인증 상태를 안전하게 관리하면서
웹 애플리케이션의 사용자 경험을 향상시키는 중요한 방법이다
보안에 주의하며 적절하게 구현한다면, 효과적인 사용자 인증 시스템을 구축할 수 있다
'Frontend' 카테고리의 다른 글
bundle 사이즈 줄이려면? (0) | 2024.03.06 |
---|---|
이벤트 루프와 태스크 큐 설명 (0) | 2024.03.06 |
쿠키, 세션, 웹 스토리지 차이 (0) | 2024.03.06 |
CORS (0) | 2024.03.06 |
Webpack, Babel, Polyfill (0) | 2024.03.06 |