[개념] CSRF란 무엇인가?

2023. 1. 18. 20:03· Info/개념 정리
목차
  1. CSRF란 무엇인가?
  2. CSRF 동작 원리 및 순서
  3. CSRF 대응방법들
728x90

 

CSRF란 무엇인가?

CSRF는 Cross Site Request Forgery의 약자로, 사이트간 요청 위조를 말하는데 웹 취약점 공격 중 하나이다. 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위 (데이터 수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격이다. 

 


 

CSRF 동작 원리 및 순서

우선 CSRF에 당하는 조건은 아래와 같다.

  1. 사용자는 보안이 취약한 서버로부터 이미 로그인이 되어있는 상태여야 한다.
  2. 쿠키 기반의 서버 세션 정보를 획득할 수 있어야 한다.
  3. 공격자는 서버를 공격하기 위한 요청 방법에 대해 미리 파악하고 있어야 한다.

만일 위의 조건들이 만족된다면 다음과 같은 순서로 CSRF 공격을 당할 수 있다.

  1. 사용자는 보안이 취약한 서버에 로그인한다.
  2. 서버에 저장된 세션 정보를 사용할 수 있는 Session ID가 사용자의 브라우저 쿠키에 저장된다.
  3. 공격자는 사용자가 악성 스크립트 페이지를 누르도록 유도한다.
    • 게시판이 있는 웹사이트에 악성 스크립트 게시글을 작성하여 클릭하도록 유도
    • 메일 등으로 악성 스크립트를 전달하여 클릭하도록 유도
  4. 사용자가 악성 스크립트가 작성된 페이지 접근 시, 웹 브라우저에 의해 쿠키에 저장된 Session ID와 함께 서버로 요청.
  5. 서버는 쿠키에 담긴 Session ID 를 통해 해당 요청이 인증된 사용자로부터 온 것으로 판단하고 처리

 

 

 

 


 

CSRF 대응방법들

CSRF에 대응하는 방법은 크게 3가지가 존재한다.

1. CAPTCHA 사용

CAPTCHA는 이미지를 보여주고, 그 이미지에 해당하는 그림, 문자, 숫자를 입력하도록하고 만일 아니라면 요청을 거부하기때문에, 효과적으로 CSRF의 공격을 방어할 수 있는 방법이다.

 

2. Referreer 검증법

요청이 들어올 때 request의 header에 담겨있는 referrer 값을 확인하여 같은 도메에서 보낸 요청인지 검증하여 차단하는 방법이다. 거의 대부분의 경우 해당 검증 방법을 사용하면 방어할 수 있다.

 

3.CSRF Token 사용

사용자의 세션에 임의의 값을 저장하여 모든 요청마다 그 값을 포함하여 전송한다. 요청이 들어올 때마다 백엔드에서 Session에 저장된 값과 요청으로 전송된 값이 일치하는지 검증하여 방어하는 방법이다.

 

 


 

 

참고:
https://tibetsandfox.tistory.com/11
https://devscb.tistory.com/123
https://sj602.github.io/2018/07/14/what-is-CSRF/

728x90
저작자표시 (새창열림)
  1. CSRF란 무엇인가?
  2. CSRF 동작 원리 및 순서
  3. CSRF 대응방법들
'Info/개념 정리' 카테고리의 다른 글
  • [개념] OAuth 란 무엇인가?
  • [개념] SpringSecurity - UserDetails, UserDetailsService
  • [개념] JWT란 무엇인가?
  • [개념] Session 기반 인증 vs Token 기반 인증
soohykeee
soohykeee
Computer Science. 2017~2023 / Java, Spring, Backend
Coding_Computer Science. 2017~2023 / Java, Spring, Backend
soohykeee
Coding_
soohykeee
전체
오늘
어제
  • 분류 전체보기
    • 회고
    • Info
      • 개념 정리
      • 정보
    • Study
      • Pet-Clinic-Project
      • Concept
    • Inflearn
      • 스프링 핵심 원리_기본편
      • Git
    • 코드로 배우는 스프링 부트 웹 프로젝트
      • Guestbook
      • MovieReview
      • Security & API

블로그 메뉴

  • 홈
  • 방명록
  • Github

인기 글

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.v4.2.1
soohykeee
[개념] CSRF란 무엇인가?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.