SD-20

🪪 세션통제 (설계)

설계단계 보안설계 · 세션통제

위험도: 상
💡 쉽게 말하면
로그인 후에도 세션ID를 그대로 두거나 쿠키 보호가 없으면, 출입증을 누가 미리 깔아두거나 베껴가도 통과되는 것과 같습니다. 로그인 시 세션ID를 새로 발급하고 쿠키엔 HttpOnly/Secure/SameSite를 붙여 보호하도록 설계해야 합니다.

🎯 직접 해보기 — 공격을 실행해 보세요

아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.

현재: 취약한 설정 — 공격이 통할까요?
# 미리 심어둔 세션ID로 피해자 세션을 가로챈다 # [공격 실행] 버튼을 누르면 시작합니다.

📋 설정 비교 (왜 막혔나?)

✗ 취약한 설정
# 설계 결정 로그인 후 세션ID 유지, 쿠키 속성 없음 → 세션 고정/탈취로 계정 도용
✓ 안전한 설정
# 설계 결정 로그인 시 세션ID 재발급 HttpOnly·Secure·SameSite + 만료 → 고정·탈취 차단

🔧 조치 방법

  1. 세션 식별자는 추측 불가하게 생성하고 로그인 시 재발급하도록 설계합니다.
  2. 쿠키에 HttpOnly/Secure/SameSite 속성과 만료(유휴/절대)를 설계합니다.
  3. 로그아웃 시 서버측 세션을 무효화하도록 설계합니다.

✅ 점검 체크리스트

  • 로그인 시 세션 재발급이 설계됨
  • 안전한 쿠키 속성이 설계됨
  • 세션 만료/무효화가 설계됨
점검기준: 개발보안 설계기준 4. 세션통제