질문 150 · 실전 면접 답변
쿠키와 서버 세션을 이용한 로그인은 어떻게 설계하나요?
이렇게 답해 보세요 (핵심 답변)
사용자가 로그인 정보를 제출하면 서버는 자격을 검증한 뒤 충분히 길고 예측 불가능한 세션 ID를 생성해 서버 저장소(Redis, DB 등)에 사용자 상태와 만료 시간을 기록합니다. 그리고 그 세션 ID만 Set-Cookie 헤더에 담아 내려주되, JavaScript 접근을 막는 HttpOnly, HTTPS 전송만 허용하는 Secure, 교차 출처 전송을 제어하는 SameSite 속성을 함께 설정합니다. 이후 요청에서는 브라우저가 자동 전송한 쿠키의 세션 ID로 서버가 세션을 조회해 인증·인가를 수행하며, 로그인 성공 시 세션 ID 재발급(회전)과 로그아웃 시 서버 측 세션 즉시 파기, CSRF 방어를 함께 적용합니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 브라우저의 쿠키는 단지 식별자 운반 수단일 뿐이고, 실제 로그인 유효성과 권한의 진실 공급원은 서버 세션 저장소에 있습니다.
- 서버가 상태를 직접 들고 있으므로 특정 기기 강제 로그아웃이나 권한 즉시 철회가 토큰 단독 방식보다 직관적입니다.
면접에서 자주 하는 실수
세션 ID 쿠키에 HttpOnly를 걸었다고 해서 XSS나 CSRF 위험이 100% 사라지는 것은 아니므로 입력 살균과 CSRF 방어를 함께 갖춰야 합니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 150번을 바탕으로 질문과 답변을 새로 정리했습니다.