본문 바로가기
개발/개발 기타

Spring Security 와 CSRF 설정

by 똘똘이박사 2020. 12. 14.

Spring Security 4.0 부터는 CSRF 설정이 기본으로 true 이다.

이에 따른 유의사항이 있는데

기본적으로 통신시 CSRF 토큰값은 POST방식으로 데이터를 서버에 전송할때 반드시 필요하다.

GET 방식일 때는 필요 없다.

 

최근에 서버와 클라이언트 간의 통신 방법으로 Restful 방식을 많이 사용하는데

게시물 목록 같은 것을 조회 하는 데도 type을 POST로 설정하는 경우가 많다.

 

최근에 jsp에서 ajax를 써서 Restful 방식의 게시판을 구현하였는데

Spring Security 를 적용하면서 문제가 발생했다.

 

게시물을 읽어오는 restful 의 type을 post로 설정하면서 발생한 문제였다.

 

이 방식이 안되는것은 아니지만, 추천할 만한 방식은 아니다.

POST 방식은 Spring Security의 인증룰을 따르기 때문에 CSRF 토큰을 반드시 넘겨야 하는데

ajax에서 CSRF 토큰을 읽어와 해당 값을 포함하고 Map 타입으로 변경하여

서버로 전송하는게 뭔가 번거롭다.

따라서 ajax를 이용해 Restful 방식으로 게시물 목록을 읽어 오려면 get 방식을 쓰도록 한다.

 

게시글 저장이나 수정 같은 경우는 form을 써야 하기 때문에 

hidden 으로 토큰 값을 전달하면 된다.

 

 

반응형