웹 애플리케이션 보안 공격중 하나로, 인증된 사용자가 악의적인 웹 사이트를 통해 의도치 않는 요청을 보내는 것을 막는 보안 문제
- CSRF 토큰
CSRF 공격을 방지하기 위해 CSRF 토큰 사용
서버는 각 세션에 고유한 CSRF 토큰 생성, 이 토큰은 미리 정의된 위치에 삽입
폼 제출 또는 AJAX 요청과 함께 이 토큰을 제출하면 서버는 요청 검증, 토큰이 일치하지 않는 경우 요청 거부
- Same-site 쿠키 속성
쿠키를 같은 출처에서만 전송하도록 제한할 수 있음
- HTTP 메서드
서버에서 안전한 HTTP 메서드에 대해서만 CSRF 토큰을 요구 가능
- CSRF 헤더
서버에서 요청 헤더에 CSRF 토큰을 포함하도록 요구 가능, 이를 통해 모든 요청이 CSRF 토큰을 제공해야 함
- CSRF 필터
서버 측에서 요청을 처리하기 전에 CSRF 필터를 사용하여 요청의 유효성 검사 가능
- Double Submit Cookie 패턴
클라이언트 측에서도 CSRF 공격을 방지하기 위해 Double Submit Cookie 패턴을 사용함, 이 패턴에서는 CSRF 토큰을 쿠키로 저장하고, 폼 데이터 또는 요청 헤더에 동일한 토큰을 포함시켜 서버로 전송함