CSRF Cross-Site Request Forgery

CSRF 공격 방식

CSRF 크로스-사이트 요청 위조 공격은 데이터의 값을 변경하여 요청하여 제품 구입, 계정 설정, 기록 삭제, 비밀번호 변경, 문자 전송 등 공격자에 의해 정보가 변경되고, 공격자 이메일이나 웹사이트로 요청되도록 하는 하이퍼링크를 심어 놓을 수도 있다.

CSRF 공격자는 공격 대상 서버의 접근 권한을 탈취하거나 웹 애플리케이션과 API 등 서비스를 마음대로 통제할 수 있는데, 대개 사용자 유저의 정보 탈취보다 특정 작업을 무단으로 사용/진행하기 위한 목적으로 많이 이루어진다고 한다.

CSRF 공격 예시

  1. 공격자가 특정 사용자의 은행 계좌에서 공격자의 계좌로 송금하라는 요청을 위조한다.
  2. 위조 요청은 하이퍼링크에 삽입하여 이메일로 전송하거나 웹사이트 자체에 삽입한다.
  3. 사용자는 공격자가 생성한 이메일 하이퍼링크나 웹사이트 링크를 클릭하여 송금하라는 요청을 전송한다.
  4. 요청을 받은 은행 서버는 사용자의 요청대로 송금을 진행한다.

CSRF 방어

CSRF 공격은 서버로 오는 요청에 대한 인증/인가를 통해 방어하거나, 세션 관리 강화를 통해 방어할 수 있다.

CSRF 토큰 사용

CSRF 토큰 사용 방식은 사용자 세션에 임의의 정보를 저장하고, 모든 요청마다 해당 정보를 포함하여 전송하고, 요청 처리 전에 해당 정보를 검증하는 방식이다.


Mordern Application vs CSRF

현재 서버 역할을 하는 많은 웹 애플리케이션은 대부분 Stateless 무상태 라는 특성을 가지도록 설계되어 있다.

Spring F/W 기반 애플리케이션도 REST API 제공하는 서버 역할이라면, Stateless 를 권장하고, 동시에 사용자 요청에 대한 유효성 검증을 위해 JWT Token 과 같은 인증 방식 적용을 많이 활용할 수 있도록 지원한다.


출처