본문 바로가기

패스트캠퍼스/100% 환급 챌린지_2

패스트캠퍼스 환급챌린지 31일차 : Netplix 구독형 멤버십 프로젝트로 배우는 Spring Security 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

 

안녕하세요 :)

오늘은 챌린지 31일차로, 베스킨라빈스가 생각나는 날이네요 싱글레귤러 1+1 행사하더라고요^^

 

오늘 배울 내용은,

Part B. 스프링 시큐리티 심화

Ch 3. CSRF & CORS

"01. CSRF - 1" 입니다.


 

오늘은 CSFT에 대해 알아보았다. 지금까지 스프링 시큐리티의 아키텍쳐, UserDetails, PasswordEncoder, 필터체인 등에 대해 알아봤는데, 이번에는 CSRF 라는 것이 무엇인지, CSRF 보호를 어떻게 할 수 있을지 (CSRF 토큰 메커니즘이 어떻게 동작하는지)에 대해 알아보는 시간이였다.

먼저, CSRF란 무엇일까? Cross-Site Request Forgery = 사이트 간 요청 위조를 뜻한다.

웹 애플리케이션 취약점 중 하나는 사용자의 의지와는 무관하게 공격자가 의도한 행동을 수행해서 웹 페이지의 보안을 취약하게 하거나, 수정/삭제 등의 작업을 하는 공격 방법이며, 공격의 난이도가 높지 않아서 흔히 사용된다.

스프링 시큐리티에서의 CSRF에 대해 알아보면,
앞선 예제에서는 HTTP GET 요청으로 엔드 포인트로 구현을 했었다. 그리고 HTTP POST 엔드 포인트인 경우에는 CSRF 보호를 비활성화 하는 설정을 추가했었다. HTTP POST 로 바로 호출을 할 수 없는 이유는 스프링 시큐리티는 기본적으로 CSRF 보호를 활성화 해두었기 때문이다.

스프링 시큐리티에서의 CSRF 보호가 작동하는 방식에 대해 살펴보면 다음과 같다.

 

예시 환경으로 웹에서 파일을 저장하고 관리하는 시스템이고, 새로운 파일을 추가하거나 기존 파일을 삭제하는 기능을 제공한다. 출처를 모르는 이메일을 받게 되고 그 안에는 어떤 페이지를 열 수 있는 링크가 포함되어 있고, 링크를 클릭한다. 그리고 빈 페이지가 열리며, 잠시후 다른 웹 페이지로 리다이렉션 된다. 이후, 모든 파일이 삭제되었음을 발견하게 된다. 어떤 일이 발생한 것일까?

파일을 관리(추가/수정/삭제 등) 하려면 시스템의 인증 과정인 로그인을 해야 한다. 로그인을 한 사용자에 대해서만 파일을 추가/수정/삭제하는 엔드포인트 호출을 허용한다. 이메일의 링크를 클릭하여 빈 페이지가 열린 후, 해당 페이지에서는 로그인한 정보와 함께 서버의 삭제 엔드포인트를 호출한다. 사용자가 의도하지 않았지만 공격자의 의도에 의해서 모든 파일을 삭제하는 요청을 수행한다. 서버는 인입된 요청이 이미 로그인이 되어 있는 사용자에 의한 것이라고 판단하기 때문에 실 사용자의 요청인지, 공격자의 요청인지 판단할 수 없다. 따라서 CSRF 공격은 로그인이 되어 있는 인증 정보와 함께 위조 코드를 실행하는 것이다.