본문 바로가기

프로그래밍/스프링[Spring]

스프링 시큐리티 CSRF 적용하기[xml 설정]



오늘은 스프링 시큐리티에서 CSRF에 토큰 적용 방법에 대해 알아보도록 하겠습니다.

 

사용방법은 간단합니다.

 

저 같은 경우 JAVA 설정이 아닌 XML에서 스프링 시큐리티를 설정하였습니다.

 

 

spring-context.xml

 

spring-context.xml 에서 http 태그 안에 다음과 같이 csrf 태그를 넣습니다.

<http use-expressions="true" >
    <csrf disabled="false"/>  //csrf를 사용
</http>

 

 

 

그리고 이제 다시 로그인을 하면 다음과 같이 403에러가 뜹니다.

 

자 이제 form 태그 내부에 다음과 같이 코드를 삽입합니다.

 

login.jsp

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

 

혹시나 스프링 시큐리티 taglib를 사용하시는 분들은 input 태그 대신 다음과 같이 작성하시면 됩니다.

 

(두 가지 방법중 본인이 편한 방법을 선택해서 하나만 사용하시면 됩니다.)

 

taglib 방법

 

상단에 sec 태그를  추가하고 다음과 같이 작성하시면 됩니다.

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>

<form id="loginForm" name="loginForm">
    <sec:csrfInput />
</form>

 

자 그럼 실제로 value 값이 제대로 들어갔는지 확인합니다.

 

두 가지 방법 모두 value 값이 정상적으로 들어갔습니다.

 

이 value는 계속해서 바뀌기 때문에 참고하시기 바랍니다.

 

그리고 403 에러 없이 정상적으로 넘어간다면 성공입니다.

 

(참고로 csrf를 사용하게 되면 logout시에도 get 방식 대신 post로 해야한다니 참고 바랍니다.)