본문 바로가기
Frontend

로그인 처리 시 쿠키와 세션 어떻게 사용하는가

by 프로그레머 2024. 3. 6.

 

로그인 처리 시 쿠키와 세션 어떻게 사용하는가

 

 

로그인 처리 시 쿠키와 세션은 사용자 인증 상태를 유지하는 데 함께 사용된다

일반적인 흐름은

 

1. 로그인 과정

  1. 사용자가 로그인 폼에 아이디와 비밀번호를 입력하여 로그인 요청
  2. 서버가 사용자의 아이디와 비밀번호를 검증 
    • 이 과정에서 데이터베이스나 다른 인증 서비스를 통해 제공된 정보의 유효성을 확인
  3. 인증이 성공하면, 서버는 사용자에 대한 고유한 세션 ID를 생성
    • 이 세션 ID는 서버에 저장되며, 사용자와 관련된 세션 데이터(예: 사용자 아이디, 권한 등)를 포함
  4. 서버는 생성된 세션 ID를 쿠키에 저장하여 클라이언트(브라우저)로 전송하며, 이 쿠키는 일반적으로 Set-Cookie HTTP 헤더를 통해 클라이언트에게 전달됨

 

2. 세션 유지 및 인증 상태 관리

  1. 클라이언트는 서버로부터 받은 쿠키를 저장하고, 이후 서버로 요청을 보낼 때마다 이 쿠키를 HTTP 요청 헤더에 포함시켜 전송
  2. 서버는 HTTP 요청 헤더에서 세션 ID를 포함한 쿠키를 읽고, 해당 세션 ID와 매칭되는 서버 측 저장소의 세션 데이터를 조회
  3. 세션 데이터를 통해 사용자의 인증 상태와 권한을 확인하고, 요청에 대한 적절한 응답을 제공
  4. 사용자가 로그아웃하면 서버는 해당 세션 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