Blog

CSRF와 클릭재킹은 어떻게 사용자를 속이는가


7 min read

서론#

보안 사고를 떠올리면
대부분은 “해커가 시스템을 뚫는다”는 장면을 상상한다.

하지만 CSRF클릭재킹
시스템을 직접 공격하지 않는다.

이 두 공격의 공통점은 명확하다.

사용자가 직접 요청을 보내게 만든다.

그래서 더 헷갈리고,
그래서 더 자주 과소평가된다.

이 글은
CSRF클릭재킹이 어떤 기술을 쓰는지가 아니라,
어떤 방식으로 사용자를 속이는지를 정리한 기록이다.

CSRF란 무엇인가#

CSRF(Cross-Site Request Forgery)는
사용자가 의도하지 않은 요청을
이미 인증된 상태로 보내게 만드는 공격이다.

여기서 중요한 전제는 하나다.

  • 사용자는 이미 로그인되어 있다
  • 브라우저는 인증 정보를 자동으로 포함한다

공격자는 이 구조를 이용한다.

CSRF는 어떻게 발생하는가#

예를 들어, 사용자가 로그인한 상태에서
다른 사이트를 방문했다고 가정해보자.

그 사이트에 이런 코드가 있다.

<img src="https://example.com/api/delete-account" />

브라우저는 이미 로그인된 상태이기 때문에
요청에 쿠키를 자동으로 포함한다.

서버 입장에서는
“정상적인 사용자의 요청”으로 보인다.

사용자는 아무것도 클릭하지 않았고,
아무것도 입력하지 않았다.

하지만 요청은 이미 전송되었다.

CSRF의 핵심은 “자동 포함”#

CSRF의 본질은
브라우저의 편의 기능에 있다.

  • 쿠키는 요청마다 자동으로 포함된다
  • 서버는 요청의 출처를 구분하지 않는다

그래서 CSRF는
“인증을 우회하는 공격”이 아니다.

인증을 그대로 이용하는 공격이다.

클릭재킹이란 무엇인가#

클릭재킹(Clickjacking)은
사용자가 클릭한 대상과
실제로 클릭되는 대상이 다르도록 만드는 공격이다.

사용자는 분명 버튼을 눌렀다고 생각하지만,
실제로는 전혀 다른 요소가 눌린다.

클릭재킹은 어떻게 발생하는가#

공격자는
정상 페이지 위에 투명한 레이어를 올린다.

  • 사용자가 보는 화면은 정상 UI
  • 실제 클릭은 보이지 않는 요소에 전달

예를 들어:

  • “동영상 재생” 버튼을 클릭했는데
  • 실제로는 “결제”, “권한 승인” 버튼을 클릭

사용자는 속았다는 사실조차
즉시 인지하지 못한다.

CSRF와 클릭재킹의 공통점#

두 공격은 서로 다른 방식처럼 보이지만,
공통된 구조를 가진다.

  • 사용자가 직접 행동한다
  • 브라우저 기능을 악용한다
  • 서버는 정상 요청으로 인식한다

그래서 이 둘은
“사용자 기반 공격”에 가깝다.

그래서 더 위험한 이유#

CSRF와 클릭재킹은
기술적으로 복잡하지 않다.

문제는
사용자 행동을 전제로 한다는 점이다.

  • 로그에 남아도 정상 요청처럼 보인다
  • 서버 단에서는 이상을 감지하기 어렵다
  • 사용자는 피해 원인을 이해하지 못한다

그래서 방어하지 않으면
오래도록 눈에 띄지 않는다.

방어의 핵심은 “의도 검증”#

이 두 공격을 막는 핵심은
요청이나 클릭이 사용자의 의도에서 나왔는지를 검증하는 것이다.

  • CSRF
    • 토큰, SameSite 쿠키, Origin 검증
  • 클릭재킹
    • iframe 차단

정리#

CSRF클릭재킹
시스템을 속이지 않는다.

대신,
사용자를 속인다.

그리고 서버는 사용자의 행동을 그대로 믿는다.

그래서 이 두 공격은
“기술 문제”라기보다
신뢰 문제에 가깝다.

5