Session 관리는 요청 전반에 걸쳐 사용자를 로그인 상태로 유지하는 것을 처리합니다 — 그리고 그것을 안전하게 하는 것이 중요합니다. session 취약점(hijacking, fixation)은 공격자가 사용자를 가장할 수 있게 하기 때문입니다. 안전한 session은 적절한 token 처리, 쿠키 보안, 라이프사이클 관리를 포함합니다.
Session이 작동하는 방식
로그인 후, 서버는 요청 전반에 걸쳐 사용자를 식별하는 SESSION을 유지한다:
→ SESSION ID(또는 token)가 클라이언트 측(보통 쿠키)에 저장되어 매 요청마다 전송됨
→ 서버는 이를 사용해 사용자가 누구인지 안다(매번 재인증 없이)
→ session ID/token은 사실상 사용자 계정의 키 → 반드시 PROTECTED되어야 한다.
Session 보호하기
✓ session 쿠키를 위한 SECURE COOKIE 플래그:
→ HttpOnly → JavaScript가 읽을 수 없음(XSS를 통한 도난 방어)
→ Secure → HTTPS로만 전송(평문 아님)
→ SameSite → 교차 사이트 요청에 미전송(CSRF 완화)
✓ 강력하고 RANDOM하며 예측 불가능한 session ID(추측 불가)
✓ session 데이터를 서버 측 저장(또는 token 서명/암호화); HTTPS로만 전송
