[Spring] CSRF_란?

dhjo ㅣ 2020. 12. 8. 17:12

CSRF_ (Cross-site request forgery)


CSRF는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다.

공격과정

  1. 이용자는 웹사이트에 로그인하여 정상적인 쿠키를 발급받는다.
  2. 공격자는 다음과 같은 링크를 이메일이나 게시판 등의 경로를 통해 이용자에게 전달한다.
  3. 공격용 HTML 페이지는 다음과 같은 이미지태그를 가진다.
    <img src= "https://trevel.service.com/travel_update?.src=Korea&.dst=Hell">
  • (해당 링크는 클릭시 정상적인 경우 출발지와 도착지를 등록하기위한 링크이다. 위의 경우 도착지를 변조하였다.)
  1. 이용자가 공격용 페이지를 열면, 므라우저는 이미지 파일을 받아오기 위해 공격용 URL을 연다.
  2. 이용자의 승인이나 인지 없이 출발지와 도착지가 등록됨으로써 공격이 완료된다. 해당 서비스 페이지는 등록 과정에 대해 단순히 쿠키를 통한 본인확인 밖에 하지 않으므로 공격자가 정상적인 이용자의 수정이 가능하게 된다.

Spring에서의 csrf

Spring Security를 적용하면 별다른 설정을 하지 않아도 csrf라는 기능이 활성화 된다.


Srping Security를 적용중인 프로젝트라면, test코드 작성시에 csrf를 함께 전송해줘야 test가 가능하다.


ex )

with(csrf())

출처 : 위키백과