현재 프로젝트
Spring Boot + Security로 구성이 되어 있습니다.
안타깝게도 JSP는 사용하지 않고 javascript만 사용중인데(Jquery 와 Thymeleaf 등 사용)
보안 심사 때문에
CSRF를 적용하고자 합니다.
WebSecurityConfigurerAdapter를 상속받은 설정 파일에서
http.csrf().disable() 부분에서 disable를 제거하고 CsrfTokenRepository를 사용하고자 합니다.
로그인 화면에서는
th:name="${_csrf.parameterName}" th:value="${_csrf.token}" 와 같은 코드를 추가하고
그 외의 화면에서는 모든 Ajax요청에 대해서
csrfHeader = $("meta[name='_csrf_header']").attr("content");
csrfToken = $("meta[name='_csrf']").attr("content");
xhr.setRequestHeader(csrfHeader, csrfToken) 와 같은 코드를 추가하였습니다.
여기서 궁금증이 생기는게
현재 JSP를 사용하지 않는 프로젝트에서 CSRF 방어를 할때 위와 같이 하는게 맞는건지 의문이 들어서 고민입니다.
(모든 화면의 Ajax를 고치기 전에 현재 이렇게 코딩하는게 맞는건지에 대한 의문이 들더군요...)
이상하게 소스가 올라가지 않아서 질문을 이해하시는데 어려움이 생기실까봐 죄송합니다.
JSP를 이용하지 않고 Spring boot+ security사용시 CSRF 공격 방어를 하는 방법에 대해서 알려주시면 감사하겠습니다.
다들 좋은 하루 되십시오!