[Network] XSS vs CSRF

🥊 CSRF vs XSS

CSRF와 XSS의 개념을 정리하면서 두 공격의 차이점을 명확히할 필요가 있어 차이점을 정리해보려 한다.

🤝 신뢰의 방향

  • XSS: 사용자가 특정 웹사이트를 신뢰하는 것을 이용한다.
    • 사용자는 정상적인 웹사이트에 접속했다고 믿지만, 실제로는 악성 스크립트가 실행된다.
  • CSRF: 웹사이트가 사용자를 신뢰하는 것을 이용한다.
    • 서버는 요청이 정당한 사용자로부터 온 것이라고 믿지만, 실제로는 공격자가 사용자의 권한을 도용한 것이다.

🎯 공격 발생 위치

  • XSS: 주로 클라이언트의 브라우저에서 발생한다.
    • 악성 스크립트가 사용자의 브라우저에서 실행된다.
  • CSRF: 서버 측에서 발생하는 문제이다.
    • 서버가 위조된 요청을 정상적인 요청으로 오인해 처리한다.

🛠️ 공격 방법

  • XSS: 악성 스크립트를 웹 페이지에 삽입하여 클라이언트 측에서 실행되게 한다.
  • CSRF: 사용자가 로그인한 상태에서 공격자가 준비한 위조된 요청을 서버로 전송하게 한다.

🔮 공격 목적 및 결과

  • XSS:
    • 사용자의 쿠키나 세션 정보를 탈취할 수 있다.
    • 웹사이트의 콘텐츠를 변조할 수 있다.
    • 악성 스크립트를 통해 추가적인 공격을 수행할 수 있다.
  • CSRF:
    • 사용자의 권한을 도용하여 특정 동작을 수행한다.
    • 게시글 작성, 비밀번호 변경, 송금 등의 작업을 수행할 수 있다.

🛡️ 방어 방법

  • XSS:
    • 입력값 검증 및 이스케이핑
    • Content Security Policy (CSP) 적용
    • HttpOnly 플래그 사용 (쿠키 보호)
  • CSRF:
    • CSRF 토큰 사용
    • 중요 동작 수행 시 재인증 요구
    • Same-Site 쿠키 속성 사용

📊 요약

특성 XSS CSRF
신뢰 방향 사용자가 웹사이트 신뢰 웹사이트가 사용자 신뢰
발생 위치 클라이언트 (브라우저) 서버
공격 방법 악성 스크립트 실행 위조된 요청 전송
주요 목적 쿠키/세션 탈취, 웹사이트 변조 사용자 권한 도용

참고

Leave a comment