
bank.com에 로그인하여 세션 쿠키를 보유함. evil.com)에 방문함. <img src="https://bank.com/transfer?to=hacker&amount=1000000" />
bank.com 도메인에 대한 쿠키를 자동으로 포함하여 요청을 전송. CSRF Token (권장)
403 Forbidden). SameSite Cookie 속성 설정
SameSite=Strict: 원본 사이트 외의 요청에 쿠키 전송 금지(가장 안전). SameSite=Lax: 일부 안전한 네비게이션(예: GET 링크)만 쿠키 전송 허용. SameSite=None; Secure: 제3자 전송 허용(HTTPS 필요). Strict 또는 Lax 사용 권장.Referer / Origin 검증
Origin 또는 Referer 헤더를 확인해 허용된 출처만 처리. Origin이 있는 요청(특히 CORS 상황)에서 더 신뢰성 있음. 사용자 재인증 (Step-up authentication)
Double-submit Cookie (대체 기법)
CORS 정책으로 제한
대부분 프레임워크는 기본 CSRF 보호 기능 제공
@csrf_exempt 또는 유사 예외 처리를 남용하지 않도록 주의.GET 요청은 무상태(부작용 없는)로 유지
AJAX 요청 시
X-CSRF-Token)에 포함해 전송하고 서버에서 검증.테스트/취약점 점검 시
| 구분 | CSRF | XSS |
|---|---|---|
| 공격 대상 | 서버 | 클라이언트(브라우저) |
| 공격 방식 | 인증된 사용자의 권한을 악용 | 악성 스크립트를 삽입·실행 |
| 목표 | 사용자의 권한으로 요청 수행 | 세션 탈취, 페이지 변조 |
| 방어법 | CSRF Token, SameSite Cookie, 출처 검증 | 입력값 검증, 출력 인코딩, CSP |
SameSite=None 또는 SameSite 설정 미흡으로 외부 요청에 쿠키가 전송됨. csrf_exempt)하고 이를 제거하지 않음.