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 으로 토큰 값을 전달하면 된다.
반응형
'개발 > 개발 기타' 카테고리의 다른 글
[Tip of the Day] IntelliJ (0) | 2023.06.19 |
---|---|
[SQL] 각 데이터베이스 별 like 검색 시 문자열 조합 방법 (0) | 2020.12.16 |
[문제해결] IntelliJ 에서 갑자기 컴파일러 문제가 발생 했을때 (0) | 2020.10.13 |
[Flutter] The service is invalid. 아이폰 테스트 에러 (0) | 2020.10.06 |
Intellij output 한글 깨지는 문제 (6) | 2019.11.21 |