용어와 정의
영문 또는 원어: CSRF
영문 정식명칭: Cross-Site Request Forgery
한글명: 사이트 간 요청 위조
CSRF는 사용자가 로그인한 서비스에 의도하지 않은 요청을 보내도록 유도해 그 사용자의 권한으로 작업이 수행되게 하는 공격입니다.
정확한 의미와 원리
브라우저가 자동으로 첨부하는 인증 정보와 서버의 요청 검증 부족이 결합할 수 있습니다. 요청이 로그인 사용자에게서 왔다는 사실과 사용자가 그 작업을 의도했다는 사실은 다릅니다.
쉽게 이해하는 사용 예시
중요한 변경 요청에 예측하기 어려운 CSRF 토큰을 확인하고 출처 및 요청 방식의 조건을 검증하는 설계가 있습니다.
종류와 관련 개념의 차이
CSRF와 XSS는 원인이 다릅니다. SameSite 쿠키는 도움이 될 수 있으나 모든 흐름을 보호하지 않으며 Origin 검증과 토큰 방식도 적용 조건이 다릅니다.
적용 조건과 오해하기 쉬운 점
GET 요청으로 상태를 바꾸거나 토큰 검증을 일부 경로에서 빠뜨리면 보호 공백이 생깁니다. 로그인, 계정 연결과 API의 실제 인증 방식을 기준으로 검증합니다.
CSRF token 요청 위조 방지 토큰
이 절의 용어: CSRF token / 요청 위조 방지 토큰
CSRF 토큰은 서버가 중요한 요청의 의도와 세션 연결을 검증하도록 사용하는 예측하기 어려운 값입니다. 요청에 포함됐다는 사실뿐 아니라 유효성과 해당 세션 또는 흐름의 연결을 확인해야 합니다. 토큰을 민감하지 않은 공개 자료처럼 로그나 URL에 노출하지 않습니다.
관련 용어와 글
함께 이해할 기준 개념
함께 비교할 용어
- SQL injection SQL 삽입 공격
- SSRF 서버 측 요청 위조
- CORS 교차 출처 리소스 공유
- CSP 콘텐츠 보안 정책
- Clickjacking 클릭재킹
- Session cookie 세션 쿠키
- Reflected XSS 반사형 XSS
- Stored XSS 저장형 XSS
- DOM-based XSS DOM 기반 XSS
- CSRF token 요청 위조 방지 토큰
- CSP nonce CSP 실행 허용 난수
- HttpOnly 스크립트 접근을 제한하는 쿠키 속성
- Secure cookie attribute 보호 연결 전송 쿠키 속성
- SameSite 사이트 간 쿠키 전송 조건