Spring
Spring Security CSRF xml 설정 제외 url request-matcher-ref
오탄자
2023. 7. 19. 23:24
Spring Security CSRF XML 설정
spring에서 csrf를 설정하는 방법은 java와 xml 설정 두 가지가 있는데 그 중 xml로 설정하는 방법
sec:http 에 <sec:csrf request-matcher-ref="" /> 를 설정한다.
AndRequestMattcher 를 이용하여 제외할 url을 패턴을 설정한다.
<sec:http>
<intercept-url pattern="" access="" />
<form-login ...
<sec:csrf request-matcher-ref="csrfMatcher" />
</sec:http>
<beans:bean id="csrfMatcher" class="org.springframework.security.web.util.matcher.AndRequestMatcher">
<beans:constructor-arg name="requestMatchers">
<beans:list>
<beans:bean class="org.springframework.security.web.csrf.CsrfFilter$DefaultRequiresCsrfMatcher" />
<beans:bean class="org.springframework.security.web.util.matcher.NegatedRequestMatcher">
<beans:constructor-arg>
<beans:bean class="org.springframework.security.web.util.matcher.AntPathRequestMatcher">
<beans:constructor-arg value="/login/**" />
</beans:bean>
</beans:constructor-arg>
</beans:bean>
<beans:bean class="org.springframework.security.web.util.matcher.NegatedRequestMatcher">
<beans:constructor-arg>
<beans:bean class="org.springframework.security.web.util.matcher.AntPathRequestMatcher">
<beans:constructor-arg value="/common/**" />
</beans:bean>
</beans:constructor-arg>
</beans:bean>
</beans:list>
</beans:constructor-arg>
</beans:bean>
jsp 화면에서 form 태그 안에 input hidden 을 만들고 csrf 토큰 값을 받을 수 있도록 name과 value에 아래와 같이 작성한다.
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />