반응형

스프링 부트에서 스프링 시큐리티를 사용할때 템플릿 엔진을 머스타쉬를 사용해서 로그인 / 회원가입등을 시도할경우 미리 설정한 리다이렉트 주소로 가게 되는경우가있다. 

이때 에러로그가 안찍혀서 난감해지는대 이럴땐 로그레벨을 낮추면 더 자세한 로그를 볼 수 있다. 

#application.properties

#logging
logging.level.root=debug

위와같이 application.properties 파일에 로깅 레벨을 디버그로 설정해준다( 디폴트는 info)

설정하고 다시 로그인 혹은 회원가입을 시도하면 아까랑은 다른 메시지를 볼 수 있는데 스프링 플터체인 로그가나오면서 "csrf"어쩌고 하는 로그가 나온다.

CSRF 란 Cross-site request forgery의 약자로 타사이트에서 본인의 사이트로 form 데이터를 사용하여 공격하려고 할 때, 그걸 방지하기 위해 csrf 토큰 값을 사용하는 것이다. 참조: velog.io/@max9106/Spring-Security-csrf

csrf에대해 서치를해보니 mustache는 csrf토큰을 기본적으로 제공을 안해주기때문에 생기는 문제였다. 
서치를 좀 해보니 인터셉터를 구현해서 모델에 어트리뷰트로 넣어주는 방법이 있었으나... 그럴리가 없다는 생각에 좀더 검색해보니...

스택오버플로우에서 발견했다. stackoverflow.com/questions/26397168/how-to-use-spring-security-with-mustache
역시 설정에 있었다. 다시한번 어플리케이션 프로퍼티를 열고 

#application.properties

#logging
logging.level.root=debug

#mustache
spring.mustache.expose-request-attributes=true

spring.mustache.expose-request-attributes=true 라고 추가해준다.

이제 머스타쉬에서 csrf를 사용할 수 있다. 

 폼에

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

 

이렇게 히든으로 csrf값을 넣어주면 csrf로 인한 필터는 통과할 수 있게되었다. 

반응형

'프로그래밍 > 삽질내역' 카테고리의 다른 글

Intellij 톰캣 에러로그 한글깨짐현상  (0) 2019.11.12

+ Recent posts