본문 바로가기
Spring/study

Spring Security CSRF

by avvin 2019. 7. 15.

사이트 간 요청 위조

위키백과, 우리 모두의 백과사전.

사이트 간 요청 위조(또는 크로스 사이트 요청 위조영어 : Cross-site request forgery, CSRFXSRF)는 웹사이트  취약점 공격 의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다.

유명 경매 사이트인 옥션 에서 발생한 개인정보 유출 사건에서 사용된 공격 방식 중 하나다.

사이트 간 스크립팅 (XSS)을 이용한 공격이 사용자가 특정 웹사이트를 신용하는 점을 노린 것이라면, 사이트간 요청 위조는 특정 웹사이트가 사용자의 웹 브라우저 를 신용하는 상태를 노린 것이다. 일단 사용자가 웹사이트에 로그인 한 상태에서 사이트간 요청 위조 공격 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출된다.


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


위 같은 공격을 못하도록 가변하는 변수인 csrf 토큰을 사용하게 됩니다.

csrf를 사용하게 되면 아래와 같이 호출하게 되며 사용자가 접속할때 또는 페이지 변경시마다 csrf 토큰이 변경 되기

때문에 악의적인 공격을 방어 할 수 있습니다.

&.dst=Hell&csrf=token1 



<input type="hidden" name="${_csrf.parameterName}" value="{_csrf.token}">

스프링 시큐리티 csrf(크로스도메인) 설정 방법 : https://rockdrumy.tistory.com/1341 참고