92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

최신소식을
편하게 만나보세요.

csrf 토큰

CSRF(Cross-Site Request Forgery) 토큰은 CSRF 공격을 방지하기 위한 보안 메커니즘입니다. CSRF 공격은 사용자의 인증 정보를 악용하여 의도하지 않은 요청을 수행하게 만드는 웹 보안 취약점입니다.


1. CSRF 공격의 작동 원리

CSRF 공격은 사용자가 신뢰하는 웹 애플리케이션에 대해 공격자가 의도한 요청을 강제로 수행하게 만듭니다. 예를 들어:

  1. 사용자가 은행 웹사이트에 로그인한 상태입니다.
  2. 공격자가 CSRF 취약점을 이용하여 악성 스크립트나 링크를 사용자의 브라우저에서 실행합니다.
  3. 사용자의 브라우저는 이미 저장된 쿠키를 자동으로 포함하여 요청을 보냅니다.
  4. 요청이 합법적으로 보이기 때문에 서버는 이를 처리합니다.

결과적으로, 사용자는 자신도 모르게 공격자의 의도에 따라 행동하게 됩니다.


2. CSRF 토큰의 역할

CSRF 토큰은 이러한 공격을 방지하기 위해 사용됩니다. CSRF 토큰은 사용자의 세션과 연계된 고유한 비밀값으로, 모든 중요한 요청과 함께 전송됩니다. 서버는 이 토큰을 확인하여 요청이 신뢰할 수 있는 사용자로부터 온 것인지 검증합니다.


3. CSRF 토큰의 작동 방식

  1. 토큰 생성 및 제공:
    • 사용자가 웹 페이지를 요청할 때 서버는 고유한 CSRF 토큰을 생성합니다.
    • 이 토큰은 페이지의 숨겨진 필드나 쿠키를 통해 클라이언트에 전달됩니다.
  2. 토큰 전송:
    • 사용자가 폼을 제출하거나 요청을 보낼 때 CSRF 토큰이 요청 데이터에 포함됩니다.
  3. 토큰 검증:
    • 서버는 요청에 포함된 CSRF 토큰과 서버가 보관 중인 토큰 값을 비교합니다.
    • 두 값이 일치하면 요청을 처리하고, 그렇지 않으면 요청을 거부합니다.

4. CSRF 토큰의 구현

CSRF 토큰은 주로 HTML 폼, AJAX 요청, 또는 쿠키를 통해 전송됩니다.

HTML 폼 예시:

html
코드 복사
<form method="POST" action="/submit"> <input type="hidden" name="csrfToken" value="generated_csrf_token_value"> <input type="text" name="data"> <button type="submit">Submit</button> </form>

AJAX 요청 예시:

javascript
코드 복사
const csrfToken = document.querySelector('meta[name="csrf-token"]').content; fetch('/submit', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': csrfToken }, body: JSON.stringify({ data: 'example' }) });

5. CSRF 방어 기법

  • CSRF 토큰 사용: 고유한 토큰을 생성하고 검증.
  • Referer 헤더 검증: 요청의 출처(Referer)를 확인.
  • SameSite 쿠키 설정: 쿠키가 동일한 사이트에서만 사용되도록 제한.
  • CAPTCHA 사용: 자동화된 요청을 방지.

6. CSRF와 XSS의 차이점

CSRFXSS

피해자의 인증된 세션을 이용해 악의적 요청을 수행. 악성 스크립트를 삽입하여 사용자의 데이터를 탈취하거나 조작.
요청은 신뢰할 수 있는 웹 애플리케이션에서 발생. 악성 코드는 공격자가 삽입한 스크립트를 통해 실행.

CSRF 토큰은 CSRF 공격을 방지하는 가장 효과적인 방법 중 하나로, 많은 프레임워크에서 기본적으로 제공됩니다. 예를 들어, 스프링 프레임워크의 Spring Security는 CSRF 토큰 기능을 기본적으로 포함하고 있습니다.

728x90