[ODOP] 80일차 - CSRF, CsrfFilter

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

Client

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>

위와 같이 서버에서 발급한 csrf 토큰을 사용하여 요청해야 한다

  • HTTP 메소드: PATCH, POST, PUT, DELETE

Spring Security

  • http.csrf() : 기본 활성화 되어있음
  • http.csrf().disabled() : 비활성화

CsrfFilter 에서는 위의 121줄 코드와 같이 header, 123줄 parameter 를 확인하여 csrf 토큰이 있는지 확인하고있다

타임리프나 다른 뷰 템플릿 언어에서는 CSRF 에 대해 지원을 해 주는데, JSP 의 경우는 지원해주지 않는다

따라서 지원해주지 않는 환경에서는 위와 같은 설정을 해 주어야 한다
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>