Develop

[Thymleaf 타임리프] form post 전송 시 403 forbidden 에러 해결

issuemaker99 2024. 9. 15. 11:37
728x90

Spring Security 사용 시 CSRF 토큰값을 보내줘야지 정상인증 처리가 됩니다.

그렇지 않으면 위변조 공격이라고 판단해서 에러가 발생 됩니다.

 


CSRF(Cross-Site Request Forgery)란?
사이트 간 요청 위조라는 의미로, 다른 오리진을 가진 사이트에서 form 요청을 보내는 것입니다. 
자세하게는 일반 사용자가 악의적인 공격자에 의해 '등록, 수정, 삭제' 등의 행위를 특정 웹사이트에 요청하도록 만드는 공격입니다.

 

▶ 403 forbidden 오류 발생 예시

<form name="ordForm" id="ordForm" action="/ord/ordCofmDocProc" method="post">
    <input type="hidden" name="ordPrdInfrList" id="ordPrdInfrList" />
    <input type="hidden" name="orPromChcInfrList" id="orPromChcInfrList" />
</form>

HTTP Status 403 – Forbidden


Type Status Report

Description The server understood the request but refuses to authorize it.


Apache Tomcat/9.0.68

 

▶ Thymleaf 타임리프에는 기본적으로 csrf token 을 자동생성해 주는 기능이 있습니다

action 부분을 아래처럼 th:action 으로 처리해 주면 정상작동 합니다.

<form name="ordForm" id="ordForm" th:action="@{/ord/ordCofmDocProc}" method="post">
    <input type="hidden" name="ordPrdInfrList" id="ordPrdInfrList" />
    <input type="hidden" name="orPromChcInfrList" id="orPromChcInfrList" />
</form>

 

LIST