[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