CSRF (Cross Site Request Forgery)


공격자가 의도한 행위를 특정 웹사이트에 요청하게 만드는 웹 보안 취약점

CSRF 문제 및 해결


원인


Spring Security는 CSRF(Cross-Site Request Forgery) 공격을 방지하기 위해 기본적으로 CSRF 보호를 활성화하고, 애플리케이션이 CSRF 토큰을 사용하여 요청의 유효성을 검증하도록 요구한다. CSRF 토큰을 제공하지 않거나 잘못된 토큰을 제공하면, 서버는 해당 요청을 유효하지 않은 것으로 간주하고 403 Forbidden 오류를 반환한다.

CSRF 토큰을 받지 못한 이유


테스트 환경에서는 일반적으로 실제 사용자 세션이나 브라우저를 통한 요청이 아닌, 테스트 클라이언트를 사용하여 요청을 보낸다. 따라서, CSRF 공격의 위험이 없어 CSRF 토큰이 필요하지 않다.

해결


방법 1. 기존에 특정 요청에 대해서만 CSRF 보호를 비활성화했던 설정을 전체 요청에 대해 CSRF 보호를 비활성화하도록 변경. 방법 2. 서버는 CSRF 공격을 방지하기 위해 각 클라이언트 세션마다 고유한 CSRF 토큰을 생성하고, 이를 클라이언트에게 전달.

참고자료