본문 바로가기
React

29. 보안 - 2

by leo2114 2024. 2. 20.
반응형

CSRF(Cross Site Request Forgery) 방어

CSRF(Cross Site Request Forgery)는 사용자가 의도하지 않은 요청을 악의적으로 실행하는 공격입니다. 이번 글에서는 CSRF 공격을 방어하는 방법에 대해 알아보겠습니다.

CSRF 공격 원리

  1. 공격자는 희생자의 브라우저를 이용하여 특정 웹 애플리케이션에 요청을 보냅니다.
  2. 희생자는 이미 해당 웹 애플리케이션에 로그인되어 있는 상태이므로, 브라우저는 요청을 처리합니다.
  3. 이러한 과정에서 희생자의 인증 정보가 유출되고, 공격자가 의도한 동작을 수행합니다.

CSRF 방어 방법

CSRF 토큰 사용: 모든 요청에 CSRF 토큰을 포함하여 요청이 유효한지 검증합니다.

<form action="/change-password" method="post">
  <input type="hidden" name="csrf_token" value="csrf_token_value">
  <input type="password" name="new_password">
  <button type="submit">Change Password</button>
</form>

 

SameSite 속성 설정: 쿠키에 SameSite 속성을 설정하여 도메인 외부에서의 요청을 방지합니다.

Set-Cookie: sessionid=abc123; SameSite=Strict

 

Referrer 검증: 요청을 처리할 때 Referer 헤더를 확인하여 요청이 유효한지 검증합니다.

const referrer = req.headers.referer;
if (referrer && new URL(referrer).origin === allowedOrigin) {
  // 요청 처리
} else {
  // 오류 처리
}

결론

CSRF 공격은 사용자의 동의 없이 악의적인 요청을 실행할 수 있어 심각한 보안 위협입니다. 따라서 CSRF 공격을 방어하기 위해 CSRF 토큰 사용, SameSite 속성 설정, Referrer 검증 등의 방법을 적용하여 웹 애플리케이션의 보안을 강화해야 합니다. 사용자의 인증 정보를 보호하고 불필요한 요청을 차단하여 웹 애플리케이션의 안전성을 유지하는 것이 중요합니다.

반응형

'React' 카테고리의 다른 글

33. React 생태계와 주요 라이브러리 - 2  (0) 2024.02.20
32. React 생태계와 주요 라이브러리 - 1  (0) 2024.02.20
31. 배포 - 2  (0) 2024.02.20
30. 배포 - 1  (0) 2024.02.20
28. 보안 - 1  (0) 2024.02.20
27. 서버 사이드 렌더링(SSR) - 2  (0) 2024.02.20
26. 서버 사이드 렌더링(SSR) - 1  (0) 2024.02.20
25. 테스팅 - 2  (0) 2024.02.20