Note ≣ | CSRF 공격에 대해 알아 두세요!
스프링 시큐리티 3.2 버전부터는 CSRF 공격에 대한 방어 기능을 제공합니다. CSRF(Cross Site Request Forgery) 공격이란 한 번 인증된 세션 정보로 악의적인 목적에서 똑같이 구성된 다른 페이지로 요청을 보내는 것을 의미합니다.
웹 쇼핑몰에서 CSRF 공격을 당하는 경우를 소개하겠습니다. 고객이 웹 쇼핑몰에 로그인한 후 로그아웃하지 않고 다른 웹 쇼핑몰을 방문할 때가 있습니다. 새로 방문한 웹 쇼핑몰의 HTML 코드가 로그아웃하지 않은 이전 웹 쇼핑몰과 동일하다면 고객 의도와는 다르게 다른 사람의 정보를 사용할 수 있습니다.
따라서 웹 쇼핑몰 서버에서는 고객의 요청 폼이 해당 웹 쇼핑몰의 올바른 폼인지 구분할 수 있는 고유한 값을 표현하는 방법인 Syncronized Token 패턴을 사용합니다. 이는 모든 요청에 세션 쿠키와 더불어 임의로 생성되는 토큰을 HTTP 파라미터로 제공하는 방법입니다. 이에 스프링 시큐리티는 CSRF 공격을 막고자 랜덤 토큰 인증 방식을 제공합니다.
스프링 시큐리티 3.2 이상 버전에서는 웹 요청을 할 때 적절한 CSRF 토큰을 포함하지 않으면 다음 오류가 발생합니다.
▲ 그림 8-9 CSRF 토큰 오류 발생