Spring Security2

Jiwon Park·2023년 3월 14일
0

form 전송시 1회성 인증키인 csrf토큰을 넣어줘서 보안 처리

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

or

<form method = "post" action="/add?${_csrf.parameterName}=${_csrf.token}">
</form>

토큰 없이 post로 요청하면 403에러가 발생한다.
->보안이 상관없어서 토큰을 안보낼거면 security-context.xml의 <security:csrf disabled="true"/> 을 통해 비활성화를 해야 한다.

example

//pom.xml(Spring Security Taglibs 주입)

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
 
<sec:authentication property="principal" var="user"/><!--*-->
<sec:authorize access="isAuthenticated()">
			<form action="/logout">
                <input type="hidden" name = "bwriter" value = "${user.username }"><!--*-->
				<input type="submit" class="btn btn-success" value="Logout" />
				<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
			</form>
</sec:authorize>


<sec:authorize access="isAnonymous()">
  			<form action="/login">
				<input type="submit" class="btn btn-primary" value="Login" />
				<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
  			</form>
</sec:authorize>
  

ajax example

jsp

<script>	
	function ajaxremoveFromCart(item) {
		$.ajax({
			type:"POST",
			url:"/cars/ajaxremove",
 			data:{cid:item},
			beforeSend : function(xhr)
		          {   /*데이터를 전송하기 전에 헤더에 csrf값을 설정한다*/
		              xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");
		          },
			success:function(result) {
				list();
			},
			error:function(request, status, error) {
				alert(request.status + " " +request.responseText);
			}
		})

	}
	</script>
profile
안녕하세요

0개의 댓글