웹 프로그래밍/[ Spring Security ]

[ Spring Security ] 06. CSRF Filter

kim.svadoz 2021. 12. 12. 14:26
728x90
반응형
인프런에서 진행하는 정수원 강사님의 "스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security" 강의를 보고 학습을 위해 개인적으로 추가/정리한 글임을 알립니다.

CSRF


사이트 간 요청 위조 공격

image-20211122115952078

CSRF란 사용자의 의도와는 무관하게 공격자가 심어놓은 행위로, 공격자가 의도한대로 응답하는 공격이다.

그래서 Spring-Security는 이런 취약점을 방지하기 위한 API를 제공한다.

 

CsrfFilter

CSRF의 취약점을 방지하는 필터이다.

  • 모든 요청에 랜덤하게 생성된 토큰을 HTTP 파라미터로 요구한다.
  • 요청 시 전달되는 토큰 값과 서버에 저장된 실제 값과 비교한 후 만약 일치하지 않으면 요청은 실패한다.
  • Client
    • <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
    • 서버의 자원에 접근할 때는 HTTP 메소드(PATCH, POST, PUT, DELETE)로 요청하고 반드시 서버에서 발급한 CSRF 토큰값으로 요청을 해야한다.

Spring Security에서는 기본적으로 http.csrf() 기능이 기본적으로 활성되 되어있고, http.csrf().disabled()로 비활성화 할 수도 있다.

728x90
반응형