사용자가 의도하지 않은 요청을 신뢰된 웹사이트에 자동으로 전송하도록 유도하는 공격.
→ 사용자의 인증 정보를 악용해 권한 있는 요청을 위조함.
공격 시나리오
- 사용자가 bank.com에 로그인 (세션 유지)
- 이후 공격자가 만든 악성 사이트 (evil.com) 방문
- 그 사이트에는 자동으로 bank.com에 POST 요청을 보내는 코드가 숨어 있음
→ 예: "공격자의 계좌로 돈 송금"
즉, 피해자는 모르게 요청을 보냈고,
서버는 세션 기반으로 이를 정상 요청으로 처리
공격 전제 조건
- 사용자가 로그인 상태이며 세션이 유효해야 함
- 공격자는 대상 서버의 요청 방식(URL, 메서드, 파라미터)을 알아야 함
- 요청이 자동 실행되게 피싱 페이지나 이미지, 스크립트 등에 심어야 함
방어 방법
| 방법 | 설명 |
| CSRF 토큰 사용 | 폼 요청마다 고유한 토큰을 발급 → 요청 시 함께 전송되어야만 서버에서 처리 |
| SameSite Cookie 옵션 | 쿠키에 SameSite=Strict 또는 Lax 설정 → 다른 사이트에서 쿠키 전송 불가 |
| 사용자 재확인 | 민감한 작업(예: 송금)은 비밀번호 재입력, OTP 등 추가 인증 요구 |
| Referer / Origin 검사 | 요청의 Referer나 Origin 헤더를 통해 출처가 올바른지 검증 |
CSRF vs XSS
| 항목 | CSRF | XSS |
| 목적 | 사용자의 권한 도용 | 사용자에게 악성 스크립트 주입 |
| 필요조건 | 사용자가 로그인 상태여야 함 | 취약한 웹사이트에서 실행됨 |
| 주체 | 공격자가 요청 조작 | 공격자가 코드 삽입 |
'ZeroBase > CS' 카테고리의 다른 글
| 시스템콜과 modebit (1) | 2025.08.10 |
|---|---|
| 운영체제와 컴퓨터 시스텀의 구조 (2) | 2025.08.10 |
| XXS(Cross-Site Scripting) (0) | 2025.08.07 |
| HTTP 멱등성 (1) | 2025.08.06 |
| 네이글 알고리즘 (0) | 2025.08.05 |