전체 그래프
Authentication

Session Hijacking

web-securityauthenticationsessionattack

상위: Web Security

요약

공격자가 유효한 세션 ID를 탈취해 피해자인 척 요청을 보내는 공격. 로그인 자격증명 없이도 세션만 훔치면 피해자 권한을 그대로 얻는다.

탈취 경로

  • 네트워크 스니핑: 평문(HTTP) 통신에서 쿠키를 가로챔
  • XSS: document.cookie를 읽어 외부로 유출 (HttpOnly 미설정 시)
  • 세션 예측: 세션 ID가 user_1_timestamp처럼 예측 가능하면 추측 가능
  • Session Fixation: 공격자가 심어둔 세션 ID를 피해자가 쓰게 유도 (별도 노트)

방어

  • HTTPS 필수 — 도청 차단
  • HttpOnly 쿠키 — JS 접근 차단으로 XSS 경유 탈취 방어
  • 세션 ID 랜덤성secrets.token_urlsafe(32) 등 암호학적 난수
  • IP / User-Agent 바인딩 — 세션 발급 시점과 다른 클라이언트면 무효화
@app.before_request
def validate_session():
    if 'user_id' in session and session.get('ip') != request.remote_addr:
        session.clear()
        abort(401, "Session hijacking detected")

관련 노트