CSRF 공격과 방어 기법

정관우·2021년 6월 27일
3
post-thumbnail

CSRF 공격이란?

CSRF (Cross-site request forgery) : 웹 애플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격방법을 의미한다. 유명 경매 사이트 옥션의 개인정보 유출 사건에 사용된 공격 방식이다.

XSS 공격과 차이

XSS 공격 (사이트 간 스크립팅) 공격은 사용자가 웹사이트를 신용하여 악성 스크립트가 실행된다면, CSRF 공격은 반대로 특정 웹사이트가 사용자의 브라우저를 신용하여 발생하는 공격이다. 간단히 말해서, XSS 공격은 악성 코드가 클라이언트에서 발생하는데 반에, CSRF 공격은 악성 코드가 서버에서 발생한다고 볼 수 있다.

CSRF 공격 방식

1 ) 공격자는 이메일이나 게시판에 CSRF 스크립트가 포함된 게시물을 전송

2 ) 관리자는 공격자가 등록한 CSRF 스크립트가 포함된 게시물을 확인

3 ) 관리자가 CSRF 스크립트가 포함된 게시물을 열람하면, 관리자의 권한으로 공격자가 원하는 CSRF 스크립트 요청이 발생

4 ) 공격자가 원하는 CSRF 스크립트가 실행되어, 관리자 및 사용자의 피해가 발생

CSRF 방어 기법

  • Referer 체크

    • HTTP 헤더에 있는 Referer로 해당 요청이 요청된 페이지의 정보를 확인하는 방법. 간단하여 소규모 웹사이트에 주로 이용된다. 하지만, 해당 정보는 Paros나 Zap, fiddler같은 프로그램으로 조작이 가능하다.
  • GET / POST 요청 구분

    • img 태그 등의 경우 GET 요청으로, form 태그로 값을 받을 경우 POST를 이용하여 요청을 구분해준다.
  • Token 사용

    • 서버에서 hash로 암호화 된 token을 발급, 사용자는 매 요청마다 token을 함께 보내어 서버의 검증을 거쳐야한다.
  • 추가 인증 수단 사용 ( ex. CAPCHA )

    • 추가 인증 수단을 거쳐 만약 테스트를 통과하지 못할 시, 해당 요청 자체를 거부하는 방법.

참고자료
[Web] CSRF(Cross Site Request Forgery) 공격 기법
[보안] CSRF(Cross Site Request Forgery)란 무엇인가?

profile
작지만 꾸준하게 성장하는 개발자🌳

0개의 댓글