pile·
보안·vercel-blogVercel Blog·

CSRF 공격 이해하기

CSRF(Cross-Site Request Forgery) 공격은 인증된 사용자를 속여 의도하지 않은 동작을 실행하게 하는 웹 보안 위협이다. 공격자가 악의적인 요청을 구성하고 사용자의 세션 쿠키를 이용해 서버를 속이는 4단계 메커니즘과 효과적인 방어 전략을 설명한다.

핵심 포인트
  • CSRF는 사용자의 인증된 세션을 악용해 서버가 공격자의 요청을 정상 사용자 요청으로 처리하게 만든다.
  • 공격자는 img src 태그나 자동 제출 폼으로 피해자가 모르는 사이에 서버 요청을 트리거한다.
  • Anti-CSRF 토큰은 각 세션마다 고유하고 예측 불가능한 값을 생성해 요청 출처를 검증한다.
  • SameSite 쿠키 속성, Referer 헤더 검증, HTTP 메서드 규율을 조합해 다층 방어를 구성한다.
  • GET 요청은 데이터 조회에만, POST는 상태 변경에만 사용하는 메서드 규율이 공격 표면을 줄인다.
상세 정리
  • 공격 전제조건: 피해자가 대상 사이트에 로그인해 세션 쿠키가 브라우저에 저장된 상태여야 한다. 공격자는 피해자를 악의적 페이지로 유도한다.
  • 1단계 (취약점 발견): 공격자가 예측 가능한 URL 패턴으로 중요 동작을 수행하는 엔드포인트를 찾는다.
  • 2단계 (요청 구성): bank.com/transfer?amount=1000&toAccount=attackerAccount 같은 요청을 만든다.
  • 3단계 (사용자 기만): img src 태그나 자동 제출 폼을 악성 페이지에 숨겨 피해자가 방문하면 자동으로 트리거된다.
  • 4단계 (실행): 브라우저가 피해자의 세션 쿠키를 자동으로 포함해 전송하므로 서버는 정상 요청으로 처리한다.
  • Anti-CSRF 토큰 방어: 서버가 세션별 고유 토큰을 생성해 폼에 숨겨 전달한다. 요청 시 토큰이 일치해야만 처리한다. 공격자는 토큰 값을 알 수 없다.
  • SameSite 쿠키 방어: Strict 또는 Lax 모드 설정으로 크로스-사이트 요청에서 쿠키 전송을 차단한다.
  • Referer 헤더 검증: 요청의 Referer 헤더를 확인해 신뢰할 수 있는 출처에서만 처리한다. 단, 헤더 누락이나 위조 가능성이 있어 단독 방어로는 부족하다.
  • HTTP 메서드 규율: GET은 데이터 조회에만 사용해야 한다. 상태를 변경하는 작업은 POST, PUT, DELETE로 처리해야 URL 링크 하나로 공격하기 어렵다.
왜 읽나- 웹 애플리케이션의 CSRF 취약점을 이해하고 Anti-CSRF 토큰, SameSite 쿠키, 메서드 규율을 조합한 방어 레이어를 구현하려는 백엔드와 풀스택 개발자에게 유용하다.
vercel-blog
Vercel Blog 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 보안·cloudflare-blogCloudflare Blog·

    오리진 서버 포스트 퀀텀 인증 지원 — ML-DSA mTLS 구현기

    Cloudflare가 오리진 서버와의 TLS 연결에 포스트 퀀텀 인증(ML-DSA)을 도입했다. 2023년 이미 포스트 퀀텀 암호화(encryption)가 배포됐지만, 인증(authentication)은 여전히 양자 공격에 취약한 상태였다. Authenticated Origin Pulls(AOP)와 Custom Origin Trust Store(COTS) 두 제품을 통해 완전한 상호 인증 TLS를 구현했으며, FIPS 204(ML-DSA) 표준을 오리진 연결에 적용한 첫 번째 마일스톤이다.

    #mtls#tls#post-quantum+2