최근 회사에서 프로젝트를 진행하면서 Spring Security CSRF를 도입했다.
CSRF는 사이트 간 요청 위조를 막는 방법이다.
사이트간 요청 위조를 막는 방법에는 Referrer 검증이나 CSRF 등이 있는데
Referrer 검증은 request header에 있는 referrer 속성(요청페이지의 정보가 담긴 속성)을 검증하여 차단하는 방식으로
header를 파악하여 같은 도메인이 아니면 요청을 차단하는 식으로 요청위조를 차단할 수 있다.
CSRF는 랜덤한 토큰값을 세션에 저장하고 사용자의 모든 요청(Request)에 대하여 서버단에서 검증하는 방법이다.
spring5에서는 csrf enable이 디폴트 이므로 이를 구현하기 위해서는 csrf 토큰을 요청페이지마다 심어두기만 하면 적용가능하다. 사용하지 않을 경우 SecurityConfig 클래스에서 csrf().disable() 설정만 추가해주면 된다.
이번에 진행한 프로젝트에서 CSRF 적용된 프로젝트를 테스트하던 중 단일 개발서버에서는 문제가 되지 않는데, 이중화되어있는 운영서버에 올렸더니 페이지가 넘어가거나 ajax 같은 새로운 요청이 있을때마다 403에러가 뜨는 현상이 발생했다.(페이지마다 csrf토큰은 잘 넣어줬는데도.. ) 그래서 현재는 csrf 설정을 disable 시켜놓은 상태인데 왜 이런 현상이 생기는지 더 찾아봐야 할 것 같다.
'Web > Spring Framework' 카테고리의 다른 글
Spring Transaction 처리 (0) | 2020.01.14 |
---|---|
Spring Exception 처리 방법 (0) | 2019.08.12 |
SpringMVC - View의 이해 (1) | 2018.08.31 |
Spring Boot 세팅하기1 - 프로젝트 생성 (0) | 2018.08.28 |
Spring Framework 세팅하기1 - 설치 (0) | 2018.05.29 |