반응형

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

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

#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
반응형

안녕하세요 예지우랑입니다.
본인은 Intellij를 매우 좋아하는데 그 이유는 정말 인텔리하기때문입니다.

스프링 프로젝트를 하는데 이상하게 톰캣 로그의 한들이 깨지는 형상이 있어서 여러가지 삽질을 해봤습니다.
다음은 해당 현상을 해결하기위한 노력에대한 글입니다.

1. vm옵션 인코딩 설정
intellij 설치 폴더에 가시면 intellij.exe.vmoption 과 intellij64.exe.vmoption 라는 파일이있습니다.
해당 파일을 메모장으로 여시고

-Dfile.encoding=UTF-8

라고 추가해줍니다.
그후

Edit Configurations 를 클릭하시고

이렇게 추가해줍니다.

결과는 -실패

2.  위에 1에서 했던 editconfiguration에서 vmoption에

-Duser.language=en
-Duser.region=US

이렇게 추가해줍니다.

이러면 로그가 영어로나오면서 한글이 깨지는 현상은 사라기지게 됩니다.

결과는 성공!

 

원인은 톰캣이 한글판이라서 로그를 한글로찍기때문이라는걸 어디서 읽었는데 정확히 확인해보진않았습니다.
어쨋든 로그나 오류메시지는 영어가 더 읽기 좋기때문에 영어로 사용하기로합시다.

감사합니다.

반응형

+ Recent posts