CSRF 관련 문의드립니다
- 작성자 :
- V*
- 작성일 :
- 2019-10-16 14:27:26
- 조회수 :
- 9,726
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요
전자정부 3.7 사용하여 개발중입니다
간소화설정을 사용하여 csrf 설정을 활성화했습니다
(context-security의 csrf="true" 설정)
그런데 2가지 문제가 있어서 문의를 드립니다.
1. timeout으로 세션만료가 되었을때, EgovPageLink.do를 타면 403 에러가 발생합니다.
csrf 설정을 해제하면 403이 발생하지 않는 것으로 보아 csrf 문제 같은데.. 이를 어떻게 해결할수 있을까요?
2.
<form>
...
<div>
<input type="hidden" name="_csrf" value="CSRF TOKEN VALUE">
</div>
</form>
위와 같은 form을 submit을 날리면 403에러가 발생하는데,
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
csrf 토큰이 분명히 form에 있고 submit 전에 form값을 찍어봐도 분명히 값이 있는데..
원인을 알 수가 없습니다 ..
전자정부 3.7 사용하여 개발중입니다
간소화설정을 사용하여 csrf 설정을 활성화했습니다
(context-security의 csrf="true" 설정)
그런데 2가지 문제가 있어서 문의를 드립니다.
1. timeout으로 세션만료가 되었을때, EgovPageLink.do를 타면 403 에러가 발생합니다.
csrf 설정을 해제하면 403이 발생하지 않는 것으로 보아 csrf 문제 같은데.. 이를 어떻게 해결할수 있을까요?
2.
<form>
...
<div>
<input type="hidden" name="_csrf" value="CSRF TOKEN VALUE">
</div>
</form>
위와 같은 form을 submit을 날리면 403에러가 발생하는데,
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
csrf 토큰이 분명히 form에 있고 submit 전에 form값을 찍어봐도 분명히 값이 있는데..
원인을 알 수가 없습니다 ..
A
안녕하세요.
표준프레임워크센터 입니다.
센터 내부적으로 테스트를 진행하였고
질문하신사항에 답변드립니다.
답변1)
센터에서 테스트한 사항으로는
정상적으로 로그아웃이되어 이동이 되었습니다.
다시 확인을 부탁드리고
문제가 있을시 해당 조건을 기재해 주시면
센터에서도 해당 조건에 따라 확인해 드리겠습니다.
답변2)
input에 csrf토큰을 수동으로 기입하신다면
${_csrf} 를 사용하셔서 구현하실수 있습니다.
Controller단에서 활용이 필요하시다면 다음 코드르 참고하시구요.
CsrfToken token = (CsrfToken)request.getAttribute(CsrfToken.class.getName());
System.o ut.println("===>>> getParameterName() = "+token.getParameterName());
System.o ut.println("===>>> getToken() = "+token.getToken());
감사합니다.
표준프레임워크센터 입니다.
센터 내부적으로 테스트를 진행하였고
질문하신사항에 답변드립니다.
답변1)
센터에서 테스트한 사항으로는
정상적으로 로그아웃이되어 이동이 되었습니다.
다시 확인을 부탁드리고
문제가 있을시 해당 조건을 기재해 주시면
센터에서도 해당 조건에 따라 확인해 드리겠습니다.
답변2)
input에 csrf토큰을 수동으로 기입하신다면
${_csrf} 를 사용하셔서 구현하실수 있습니다.
Controller단에서 활용이 필요하시다면 다음 코드르 참고하시구요.
CsrfToken token = (CsrfToken)request.getAttribute(CsrfToken.class.getName());
System.o ut.println("===>>> getParameterName() = "+token.getParameterName());
System.o ut.println("===>>> getToken() = "+token.getToken());
감사합니다.