CSRF (Cross-site Request Forgery)

CSRF

개요

CSRF는 사용자의 의지와 무관하게 악의적인 요청을 보내는 웹 보안 취약점으로, 인증된 세션을 악용합니다.

CSRF 설명

🚨 작동 원리

CSRF 공격은 다음 세 가지 조건이 충족되어야 성공합니다:

  • 사용자가 취약한 서버에 로그인된 상태여야 합니다.
  • 세션 정보가 쿠키를 통해 접근 가능해야 합니다.
  • 공격자가 요청 매개변수를 미리 알고 있어야 합니다.

공격 과정은 다음과 같습니다:

  • 사용자가 취약한 서버에 로그인합니다.
  • 세션 ID가 브라우저 쿠키에 저장됩니다.
  • 공격자가 악성 스크립트가 포함된 페이지를 방문하도록 유도합니다.
  • 브라우저가 세션 ID와 함께 요청을 보냅니다.
  • 서버가 요청을 정당한 것으로 판단하고 처리합니다。

예를 들어, 악성 HTML 페이지가 사용자의 비밀번호를 변경하거나 `` 태그로 GET 요청을 유발할 수 있습니다.

🔒 대응 방안

Referer 확인

HTTP Referer 헤더를 확인하여 신뢰할 수 있는 호스트에서 온 요청인지 검증합니다.

CAPTCHA

요청 시 CAPTCHA를 통해 인증 코드를 검증하여 악의적인 요청을 차단합니다.

CSRF 토큰

고유 토큰을 세션에 저장하고 요청 시 이를 비교하여 인증된 요청만 처리합니다.