본문 바로가기

WEB

CSRF (Cross Site Request Forgery)공격이란? - 삽질중인 개발자

반응형

- CSRF ( 사이트 간 요청 위조 ) -

 

 

1. CSRF ( Cross Site Request Forgery ) 란?

  • 사이트 간 요청 위조
  • 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법

 

2. 어떤식으로 동작하는가? ( 이미지 태그를 통한 공격 )

  • A라는 사이트의 관리자 권한을 갖고 있는 유저가 A라는 사이트에 로그인되어 있는 상태이고
  • A라는 사이트에 관리자가 유저의 권한을 변경할 때 사용되는 다음과 같은 URL이 있다고 할 때
  • GET /changeUserAuth?id=programmer93&auth=ROLE_ADMIN ( programmer93의 권한을 admin으로 변경 )
  • 공격자가 사용자한테 무작위 이메일을 보낼 때 해당 url이 걸려있는 아래와 같은 이미지 태그를 추가한다.
<img src="http://localhost:8080/changeUserAuth?id=programmer93&auth=ROLE_ADMIN" width="0" height="0">

 

  • 이 이메일을 여는 순간 브라우저는 img 태그에 있는 src 주소에 가서 이미지를 가져오려고 해당 주소에 접속한다.
  • 이때 A 사이트에 이미 로그인 되어 있는 관리자 권한의 유저이기에 해당 URL에 접속이 되면서 공격이 성공한다.

 

3. 방어 방법은 ?

  1. Request의 Referer 검증 방법
    • 이 방법은 서버단에서 Request의 Header안에 있는 Referrer를 참조하여 도메인이 해당 사이트에서 온 요청인지를 확인하는 방법이다.
    • 대부분의 상황에서 CSRF 공격을 차단할 수 있다.
  2. Security Token 사용 방법
    • 서버단에서 세션에 임의의 난수를 저장한 후 사용자에게 난수 값을 전달하고 사용자는 이 난수 값을 요청과 함께 보내 정상적인 요청인지 확인하는 방법
    • 대부분의 상황에서 CSRF 공격을 차단할 수 있다.

 

 

 

 

 

 

 

 

반응형

'WEB' 카테고리의 다른 글

PRG 패턴 (Post-Redirect-Get) - 삽질중인 개발자  (0) 2021.07.04