전체 목록
보안Medium#217

CSRF 공격은 어떻게 동작하고 어떻게 방어하나요?

#보안#CSRF#Cookie#웹보안

답변 포인트

쿠키 자동 전송과 요청 검증를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.

정답 및 해설

빠른 요약

CSRF는 인증 쿠키가 자동 전송되는 특성을 악용해 사용자가 의도하지 않은 상태 변경 요청을 보내게 합니다. SameSite, CSRF 토큰, Origin 검증으로 방어합니다.

CSRF(Cross-Site Request Forgery)는 사용자가 로그인한 사이트에 대해, 공격자가 사용자의 브라우저를 이용해 원치 않는 요청을 보내게 만드는 공격입니다. 브라우저가 쿠키를 자동으로 붙여 보내는 특성을 악용합니다.

공격 흐름

  1. 사용자가 은행 사이트에 로그인해 세션 쿠키를 가진 상태입니다.
  2. 공격 사이트에 접속합니다.
  3. 공격 사이트가 은행의 송금 URL로 폼 제출이나 이미지 요청을 유도합니다.
  4. 브라우저는 은행 쿠키를 자동 포함합니다.
HTML
<form action="https://bank.example/transfer" method="POST">
  <input name="to" value="attacker">
  <input name="amount" value="1000000">
</form>
<script>document.forms[0].submit()</script>

방어 방법

  • 상태 변경 요청에는 CSRF token을 요구합니다. 토큰은 공격 사이트가 알 수 없어야 합니다.
  • 쿠키에 SameSite=Lax 또는 Strict를 설정합니다.
  • 중요한 요청은 POST/PUT/DELETE를 사용하고, GET으로 상태를 바꾸지 않습니다.
  • Origin 또는 Referer 헤더를 검증합니다.
  • JSON API도 방심하면 안 됩니다. CORS 허용과 credential 설정을 함께 봐야 합니다.

XSS와의 관계

XSS가 있으면 공격자가 페이지 안에서 CSRF 토큰을 읽어 요청할 수 있으므로 CSRF 방어가 무력화될 수 있습니다. 따라서 XSS 방어가 선행되어야 합니다.

면접 답변 포인트

CSRF는 인증 정보가 자동 전송되는 브라우저 특성을 이용한 요청 위조입니다. 토큰, SameSite 쿠키, Origin 검증, 안전한 HTTP 메서드 사용을 함께 적용한다고 답하면 좋습니다.

관련 질문

같은 카테고리/태그 기준