Engineering Note

[Security] CSRF(Cross-Site Request Forgery) 개념과 API 서버에서는 주로 비활성화 하는 이유 본문

Computer Science/Security

[Security] CSRF(Cross-Site Request Forgery) 개념과 API 서버에서는 주로 비활성화 하는 이유

Software Engineer Kim 2025. 7. 6. 18:08

CSRF(Cross-Site Request Forgery)

- 인증된 사용자의 의지와 무관하게 악의적인 요청이 서버에 전달되는 공격

- 세션 인증 방식을 사용하는 서버에서 발생

 

공격 시나리오

- 사용자가 로그인 된 세션을 유지하는 상태

- 사용자가 같은 브라우저로 악성 코드가 심어진 사이트 방문 

- 악성사이트에서 자동으로 POST요청을 보냄. 서버는 기존의 세션 쿠키로 인증된 요청이라고 믿고 실행


Cross-Site-Request-Forgery가 필요한 이유

- 세션 기반 로그인 인증 방식(Session + Cookie)에서는 브라우저가 자동으로 쿠키를 보내기 때문에 CSRF 위험이 있음.


API서버 CSRF 비활성 이유
API 서버에서는 서버는 세션 상태를 저장하지 않고 Stateless하게 동작하여, 컨테이너 기반의 세션 공유 없이도 수평 확장이 용이하도록 JWT 방식을 사용하는데, JWT 인증 방식은 클라이언트가 인증 정보를 HTTP Header에 직접 담아 보내기 때문에, 인증 상태를 서버에서 저장하고 브라우저에서 cookie로 인증 세션값을 전달하는 방식이 아니라서 비활성화한다.


정리 요약

CSRF는 세션 기반 인증(브라우저 자동 쿠키 전송)에서만 발생하며, JWT 기반 API 서버는 Stateless 구조로 인증 정보를 HTTP Header에 직접 담아 보내므로 CSRF 공격이 원천 차단된다.

Comments