Spring Security - csrf protection을 사용하지 않는 이유

김효진·2022년 5월 2일
0
post-thumbnail

  • csrf : Cross Site Request Forgery, 의도치 않은 위조요청을 보냈을 때 csrf protection을 적용하면 html에서 csrf토큰이 포함되어 있어야 요청을 받아들이도록 함으로써 위조 요청을 방지한다.
  • Spring Security는 기본적으로 csrf protection을 제공하여 csrf 공격으로부터 방지한다.
  • 하지만, 보안 수준 향상시키는 csrf를 왜 disable을 하는걸까? non-browser clients 만을 위한 서비스라면 csrf 코드가 필요없다고 한다. (참고, spring security document)

  • 요즘 rest api를 이용하는 서버는 session 기반 인증과 달리 토큰 방식을 사용한다. 따라서 stateless하기 때문에 따로 서버에 인증 정보를 보관하지 않는다.(왜 요즘 서버들은 토큰방식을 사용하는 걸까?)
  • 즉 csrf 공격으로부터 안전하고 매번 api 요청에 있는 csrf 토큰을 받지 않기 때문에 csrf protection 기능을 disable() 한다.
  • 대신 rest api에서 client가 권한이 필요한 요청을 하려면 필요한 인증정보(OAuth2, jwt토큰)을 요청에 포함시켜야 한다.

참고
https://thisisprogrammingworld.tistory.com/145

profile
어제보단 하나라도 나은 오늘이 되자!!💪

0개의 댓글