[Spring] 게시글 등록, 수정 시 같은 form을 사용하기

이다혜·2023년 11월 18일
0

Spring

목록 보기
14/27

보통의 게시판은 게시글을 등록하고 수정할 때 작성 폼이 동일하다.

이를 가능하게 하기 위해 기존 등록 템플릿에서 th:action 속성을 삭제해야한다.

이 속성을 삭제하면 CSRF 값이 자동으로 생성되지 않기 때문에 CSRF 값을 설정하기 위한 hidden 형태의 input 엘리먼트를 수동으로 추가해야한다.

💡 CSRF(Cross-SiteRequest Forgery)?


악의적인 웹사이트에서 사용자의 권한을 도용하여 특정 동작을 수행하도록 하는 공격

❓ CSRF 공격을 방지하기 위한 방법


CSRF 토큰을 사용하는 것이다.
CSRF 토큰은 서버가 웹 페이지를 생성할 때 생성되어, 사용자의 세션에 저장되고 웹페이지의 폼에도 삽입된다. 이 토큰은 사용자의 세션과 관련이 있어 사용자가 약의적인 웹사이트로부터의 공격을 방지하는 역할을 한다.


<form th:object="${questionForm}" method="post">
        <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}" />
  
  		(... 생략 ...)
  
</form>
  

폼 태그의 action 속성 없이 폼을 submit하면 action은 현재 URL을 기준으로 전송된다.

즉, 질문 등록시 브라우저에 표시되는 URL은 /question/creat일 것이기 때문에 /question/create로 POST 요청이 갈것이고, 수정시에는 브라우저에 표시되는 URL이 /question/modify/{id} 형태일 것이기 때문에 그 형태로 POST 요쳥이 전송될것이다.

0개의 댓글