사이트 간 요청 위조 CSRF, CsrfFilter

장서연·2022년 5월 29일
0

스프링 시큐리티

목록 보기
9/9

이같은 불상사를 방지하기 위해 스프링시큐리티는 Csrf 필터로 csrf 취약점을 방지한다.

Form 인증- CsrfFilter

  • 모든 요청에 랜덤하게 생성된 토큰을 HTTP 파라미터로 요구
  • 요청 시 전달되는 토큰값과 서버에 저장된 실제 값과 비교한 후 일치하지 않으면 요청은 실패한다.

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 필터를 만들면 된다.

0개의 댓글