본문 바로가기
system_fundamentals/security_cryptography

CSRF

by 죄니안죄니 2026. 5. 19.
반응형
 
CSRFCSRFCSRF
 
 

CSRF(Cross-site request forgery)는 한 줄로 말하면:

사용자가 로그인된 상태를 악용해서,
원하지 않는 요청을 대신 보내게 만드는 공격
 

이다.


핵심 포인트

엄청 중요.

CSRF는:

"사용자를 해킹"
 

하는 게 아니라,

"브라우저가 자동으로 쿠키를 보내는 특성"
 

을 악용한다.


가장 쉬운 예시 은행 사이트

정상 상황

사용자 로그인 성공.

브라우저에는:

 
Cookie: SESSION=ABCD
 

저장됨.

이후 송금 요청

 
POST /transfer
Cookie: SESSION=ABCD

amount=100000
 

서버는:

"로그인된 사용자 요청이네"
 

라고 판단.


문제 상황

사용자가 로그인된 상태로:

악성 사이트
 

접속.

공격 페이지 안에

예:

<img src="https://bank.com/transfer?amount=1000000">
 

같은 코드 존재.

브라우저 동작

브라우저는 자동으로:

Cookie: SESSION=ABCD
 

를 bank.com 요청에 포함.

결과

서버 입장에서는:

"정상 로그인 사용자 요청"
 

처럼 보인다.


즉 핵심 문제

브라우저가 쿠키를 자동 전송
 

한다는 것.


그래서 이름이 CSRF

Cross-Site Request Forgery:

다른 사이트에서 요청 위조

 
 

조건 2개 필요

CSRF 성립하려면 보통:

조건 필요 여부
로그인 상태 필요
자동 인증정보 전송 필요

즉 주로 쿠키 기반 인증에서 발생

예:

  • Session
  • Cookie 기반 JWT

반대로 Authorization 헤더 기반 JWT는?

보통:

 
Authorization: Bearer TOKEN
 

은 브라우저 자동 전송 안 함.

그래서 일반적으로 CSRF 위험 낮다.


하지만 쿠키 저장 JWT는 가능

예:

HttpOnly Cookie JWT
 

구조면 CSRF 가능성 존재.


CSRF 방어 핵심

핵심은:

"이 요청이 진짜 우리 사이트에서 왔는가?"
 

검증하는 것.


대표 방어 1 — CSRF Token

가장 전통적.


흐름

서버가 랜덤 토큰 발급

예:

X9AF81...
 

페이지 안에 숨김 삽입

 
<input type="hidden" name="_csrf" value="X9AF81">
 

요청 시 같이 전송

 
POST /transfer

csrf_token=X9AF81
 

서버 검증

세션 안 값과 같은가?
 

검사.


왜 안전?

공격자는:

토큰 값을 읽을 수 없음
 

(동일 출처 정책 때문)


대표 방어 2 — SameSite Cookie

현대 브라우저 핵심.

쿠키 옵션:

 
Set-Cookie: SESSION=abc; SameSite=Lax
 

 


의미

다른 사이트 요청에는 쿠키 제한
 

현재 브라우저 기본값도 강화됨

Chrome 등 대부분:

SameSite=Lax
 

기본 적용.


대표 방어 3 — Origin/Referer 검사

서버가:

Origin
Referer
 

헤더 확인.


예시

 
Origin: https://myservice.com
 

다르면 차단.


실무에서 중요한 오해

GET 요청은 안전?

아니다.

중요 작업:

송금
삭제
수정
 

를 GET으로 만들면 위험.


그래서 REST 원칙 중요

메서드 용도
GET 조회
POST/PUT/DELETE 변경

Spring Security 기본

Spring Security는 기본적으로:

CSRF Protection 활성화
 

한다.


API 서버에서는 자주 끔

예:

 
http.csrf(csrf -> csrf.disable())
 

왜?

보통:

Authorization Header JWT
 

방식 사용해서.


하지만 쿠키 기반 JWT면?

다시 CSRF 고려해야 함.


실무 기준 정리

인증 방식CSRF 위험
Session Cookie 높음
Cookie JWT 가능
Authorization Header JWT 낮음

XSS와 차이

엄청 헷갈림.


CSRF

사용자 브라우저가 대신 요청
 

XSS

악성 JS 실행
 

CSRF는 읽기는 못함

보통:

요청만 보냄
 

이다.


핵심 한 줄

CSRF는:

브라우저의 자동 쿠키 전송 특성을 악용해,
로그인된 사용자의 권한으로 원치 않는 요청을 보내게 만드는 공격
 

이다.

반응형

'system_fundamentals > security_cryptography' 카테고리의 다른 글

CSP  (0) 2026.05.19
SQL Injection  (0) 2026.05.19
XSS  (0) 2026.05.19
쿠키 보안 옵션  (0) 2026.05.18
공개키/개인키 용례에 따른 목적과 용법  (0) 2026.05.18

댓글