본문 바로가기

기타

CSRF (Cross-Site Request Forgery) 간단 설명

728x90

개요

CSRF(크로스 사이트 요청 위조, Cross-Site Request Forgery)는 웹 애플리케이션의 취약점을 이용해 사용자가 의도하지 않은 요청을 실행하게 하는 공격 방식입니다. 사용자가 신뢰하는 웹 사이트에 인증된 상태에서 공격자가 악의적인 요청을 하도록 유도해 사용자의 권한으로 특정 작업을 실행시키는 것이 핵심입니다.

 

CSRF 공격 예시

  1. 사용자가 A 사이트에 로그인하고 세션을 유지한 채로 웹 브라우저를 사용 중입니다.
  2. 공격자는 사용자를 속여서 악성 코드가 포함된 B 사이트로 이동하게 합니다.
  3. B 사이트는 사용자가 A 사이트에서 인증된 상태임을 이용해, 사용자 몰래 A 사이트로 악의적인 요청을 보냅니다. 예를 들어, 사용자의 권한으로 계좌이체, 비밀번호 변경 등 중요한 작업을 수행할 수 있습니다.
  4. A 사이트는 요청이 사용자의 세션을 통해 들어온 것이므로 이를 신뢰하고 요청을 처리하게 됩니다.

 

CSRF 방어 방법

CSRF 공격을 방지하기 위해 웹 애플리케이션에서는 다양한 방법을 사용할 수 있습니다:

  1. CSRF 토큰 사용: 각 요청에 대해 서버가 난수로 생성된 토큰을 포함하도록 하여 요청의 정당성을 확인합니다. 토큰이 없거나 일치하지 않으면 요청을 거부합니다.
  2. Referer 검증: 요청의 Referer 헤더를 검토하여 요청이 올바른 출처에서 발생했는지 확인합니다. 다만, 이 방법은 모든 경우에 완벽하지 않을 수 있습니다.
  3. SameSite 쿠키 속성 설정: 쿠키에 SameSite 속성을 설정하여 같은 도메인에서만 쿠키가 전송되도록 합니다. 이를 통해 외부 사이트에서의 요청이 차단됩니다.

 

요약

  • CSRF는 사용자가 의도하지 않은 요청을 실행하게 만드는 웹 보안 취약점입니다.
  • 공격자는 사용자가 인증된 상태에서 악의적인 요청을 서버로 전송하게 만듭니다.
  • 방어 방법으로는 CSRF 토큰 사용, Referer 검증, SameSite 쿠키 설정 등이 있습니다.