이같은 불상사를 방지하기 위해 스프링시큐리티는 Csrf 필터로 csrf 취약점을 방지한다.
client
HTTP 메소드: PATCH, POST, PUT, DELETE (GET 은 데이터를 변경하는 위험한 요청이 아니므로 제외)
Spring Security
- http.csrf() : 기본 활성화되어있음
- http.csrf().disabled : 비활성화
.disable() 로 csrf 속성을 비활성화해주지 않는 이상, 스프링부트 서버로 GET 이외의 요청, 즉 POST, PUT, DELETE 등 데이터를 변경할 수 있는 위험한 명령에 대해 403 에러를 때려버린다. 위의 요청에서 헤더에 CSRF 토큰을 잘 넣은채로 요청할때만 200 정상 응답을 받을 수 있다.
근데 내가 만든 안전한 프론트에서 내 스프링부트 서버로 POST 등의 작업을 해야하는데, 이를 위해서는 커스텀 CSRF 필터를 만들면 된다.