본문 바로가기

컴퓨터공학/Spring & Hibernate

Spring> Security> Cross Site Request Forgery(CSRF)

CSRF란 무엇인가??

위키에서 보니

 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다.

사이트 간 스크립팅(XSS)을 이용한 공격이 사용자가 특정 웹사이트를 신용하는 점을 노린 것이라면, 사이트간 요청 위조는 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린 것이다.

 

 

 

 

이것을 보호하기 위해서

CSRF protection 은 Spring Security 에 의해서 작동된다.

Spring Security 는 Synchronizer Token Pattern을 사용한다.

각 request는 세션쿠키와 임의로 생성된 토큰을 포함한다.

request를 진행할 때 Spring Security는 진행하기 전에 토큰을 확인한다. 

이 모든 것은 Spring Security에 의해서 다뤄진다..

 

<form:form>은 자동적으로 CSRF 토큰을 추가한다.

만약 <form:form> 을 사용하지 않으면 손수 CSRF 토큰을 집어 넣어야 한다.

 

 

엣지나 크롬에다가 url을 집어넣고 소스 원본보기를 해보면 

위 사진처럼 토큰이 자동으로 생긴 걸 볼 수 있다.

 

 

 

 

수동으로 만드는 방법은 

<form> </form> 형태로 바꾸고

아래에다가 위 내용을 첨부하면 된다..