기술 가이드

클릭재킹(Clickjacking) 완전 가이드: 무엇이며 어떻게 보호할까

7 min read 보안 업데이트됨 19 Sep 2025
클릭재킹 완전 가이드: 보호 방법과 체크리스트
클릭재킹 완전 가이드: 보호 방법과 체크리스트

클릭 앤드 콜렉트 표지 이미지 — 클릭재킹을 은유적으로 나타낸 사진

클릭재킹이란

클릭재킹은 사용자가 보고 있는 정상적인 웹 페이지 위에 공격자가 투명하거나 숨겨진 요소를 덮어, 사용자가 의도하지 않은 대상(예: 악성 링크, 권한 부여 버튼)을 클릭하게 만드는 공격입니다. 한 줄 정의: 사용자 인터페이스를 속여 클릭을 가로채는 공격입니다.

공격자는 주로 iframe, CSS, 혹은 포지셔닝을 조합해 덮개를 만들고, 보이는 요소와 실제 클릭 가능한 요소를 불일치시킵니다. 사용자는 원래 보이는 버튼을 클릭했다고 생각하지만, 실제로는 공격자가 준비한 악성 제어가 눌립니다.

웹사이트의 HTML 코드 스니펫을 보여주는 이미지

대표적 동작 방식

  • 투명하거나 숨겨진 오버레이를 덮어 클릭을 가로챔
  • 클릭 이벤트 드롭(첫 클릭은 무시되는 것처럼 보이지만 실제로는 악성 요소가 활성화됨)
  • 요소 재배치 또는 오프셋 오차를 이용한 재지정
  • 악성 팝업과 연계한 스크롤 유도
  • 페이지 일부 요소만을 잘라 표적화하는 크롭 공격

비슷한 변종으로는 likejacking(좋아요·팔로우 명령 탈취), cookiejacking, filejacking, cursorjacking 등이 존재합니다.

왜 기존 보호 장치가 항상 충분하지 않은가

클릭재킹이 특히 위험한 이유는 공격이 실제 합법 사이트 위에서 발생한다는 점입니다. 사용자는 신뢰하던 사이트에서 상호작용하기 때문에 경계가 낮아집니다. 또한 다음 이유들로 방어가 어렵습니다:

  • 전통적 안티바이러스는 네트워크 상의 악성 파일이나 알려진 악성 동작을 탐지하지만, 클릭재킹은 파일을 즉시 다운로드하지 않을 수 있음
  • 많은 브라우저는 기본 방어(iframe 관련 제약 등)를 제공하지만, 공격자는 이 제약을 우회하거나 더 복잡한 흐름을 만들어 탐지를 피함
  • 새롭게 발견된 ‘더블 클릭재킹’은 첫 클릭으로 정상 확인 절차(예: CAPTCHA, 확인 버튼)를 유발한 뒤 두 번째 클릭에서 권한 부여나 플러그인 설치를 발생시켜 탐지를 어렵게 함

로봇과 'I'm not a robot' 체크박스가 표시된 이미지

더블 클릭재킹이란

더블 클릭재킹은 단일 클릭 흐름 대신, 사용자로 하여금 두 번 이상 클릭하도록 유도합니다. 첫 클릭은 정상 흐름(확인, CAPTCHA 등)을 트리거하고, 두 번째 클릭 시 공격자가 준비한 악성 요소가 활성화됩니다. 이 방식은 많은 브라우저의 단순 iframe 탐지 로직을 우회할 수 있습니다.

모바일에서의 더블 탭 유도도 포함됩니다. 결과적으로 사용자는 확신을 가지고 두 번째 클릭을 하게 되고, 권한 상승이나 플러그인 설치가 발생할 수 있습니다.

사용자 관점의 즉시 보호 방법

다음 단계는 개인 사용자가 즉시 적용할 수 있는 기본 방어입니다.

  1. 브라우저를 최신 상태로 유지하세요. 보안 패치는 우선입니다.
  2. 확장(플러그인)을 최소화하고, 필요한 것만 최신 버전으로 사용하세요. 공격자는 원래 사이트 동작을 변경하는 확장을 악용할 수 있습니다.
  3. 갑자기 나타나는 확인창/추가 클릭 요구를 의심하세요. 평소에 없던 확인 절차는 경고 신호입니다.
  4. 클릭 후 링크가 실제로 다른 곳으로 이동하는지 확인하세요. 목적지가 없거나 빈 링크라면 재클릭하지 마세요.
  5. 팝업과 광고는 피하세요. 특히 ‘당첨’, ‘지금 설치’ 같은 문구는 의심하세요. 광고 차단기는 유용합니다.
  6. 새 사이트나 의심스러운 사이트는 URL을 재확인하세요. 철자 오류(typosquatting)는 흔한 사기 수법입니다.
  7. URL 검사 서비스를 사용해 의심 페이지를 점검하세요(아래 툴 목록 참고).

권장 URL 검사 도구

VirusTotal 홈페이지 스크린샷

  • URLvoid
  • VirusTotal (특히 다운로드 링크 검사에 유용)
  • urlscan.io
  • Google Transparency Report
  • Hybrid Analysis

대부분의 안티바이러스 제품은 웹 평판 확장으로 의심스러운 사이트를 경고합니다. 하지만 이 역시 완전한 방어는 아닙니다.

개발자·사이트 운영자가 해야 할 것

웹사이트 운영자는 클릭재킹 방어를 반드시 구현해야 합니다. 사용자 신뢰와 계정 보안이 직접적으로 달려 있습니다.

HTTP 헤더로 기본 방어 적용

  • X-Frame-Options: DENY 또는 SAMEORIGIN 사용
X-Frame-Options: DENY

DENY는 어떤 사이트에서도 프레임으로 페이지를 로드하지 못하도록 합니다. SAMEORIGIN은 동일 출처에서만 허용합니다.

  • Content-Security-Policy frame-ancestors로 더 세밀한 제어
Content-Security-Policy: frame-ancestors 'self'

CSP의 frame-ancestors 지시문은 X-Frame-Options보다 현대적이고 우회 방지에 더 강합니다. 여러 도메인을 허용할 수도 있습니다.

iframe 사용 시 고려사항

  • 외부 콘텐츠를 삽입해야 한다면 sandbox 속성을 적극 사용하세요.
  • 필요한 경우 최소 권한만 허용하는 allow-* 속성 사용

예:

UI/UX 설계

  • 민감 작업은 단일 클릭으로 끝내지 마세요. 명시적 확인(다이얼로그, 비밀번호 확인 등)을 요구하세요.
  • 중요한 버튼은 시각적으로 분명하게 표시하고, 투명도/포지셔닝을 남발하지 마세요.
  • 외부 스크립트 로드를 엄격하게 관리하고 타사 위젯 사용을 최소화하세요.

서버/빌드 파이프라인 점검

  • 서드파티 라이브러리와 플러그인을 정기적으로 검토하세요.
  • 배포 전 정적분석과 런타임 검사를 포함한 보안 테스트를 자동화하세요.

점검 체크리스트 (역할 기반)

사용자(일반):

  • 브라우저 자동 업데이트 활성화
  • 불필요한 확장 비활성화
  • 의심스러운 팝업 또는 추가 클릭 요구 시 중단
  • URL 철자 확인 및 리포트

사이트 운영자(IT/운영팀):

  • X-Frame-Options 또는 CSP frame-ancestors 구성
  • 외부 콘텐츠 로드 정책 및 CSP 정책 문서화
  • 다운로드 링크와 폼에 대한 입력 검증
  • 정기적인 URL/페이지 스캔

개발자(프론트엔드/백엔드):

  • iframe sandbox 적용
  • UI 요소의 포커싱/탭 순서 테스트
  • 더블 클릭/이중 입력 흐름에 대한 검증
  • 자동화된 보안 테스트 케이스 추가

사고 대응 방법론(간단한 미니-메소드)

  1. 인지: 사용자 신고 또는 모니터링에서 이상 행위 감지
  2. 격리: 해당 페이지 또는 기능 임시 비활성화
  3. 수집: 로그, 스크린샷, 네트워크 트레이스 수집
  4. 분석: 오버레이의 출처(서드파티 스크립트, 침해된 플러그인 등) 확인
  5. 복구: 취약 코드 제거, CSP/헤더 강화, 플러그인 롤백
  6. 공지: 영향받은 사용자와 내부팀에 투명하게 알림
  7. 사후 점검: 패치 적용 여부 확인, 재발 방지 대책 수립

테스트 케이스 및 수용 기준

  • X-Frame-Options 또는 CSP frame-ancestors가 모든 민감 페이지 응답에서 설정되어야 함
  • 외부 도메인 프레임 삽입 시 sandbox가 사용되고 허용 속성이 최소화되어야 함
  • 더블 클릭 흐름에서 두 번째 클릭 시 민감 권한이 부여되지 않아야 함(자동화된 UI 테스트로 검증)
  • 페이지에서 투명 오버레이가 감지되면 테스트가 실패해야 함(시각적 검사와 스크립트 기반 검사 병행)

클릭재킹이 실패하는(또는 약한) 경우들 — 반례

  • 공격자가 동일 출처 정책(Same-Origin Policy)을 위반하거나 브라우저 보안 취약점 없이 완전한 우회는 어렵습니다.
  • 완전한 CSP와 X-Frame-Options가 적용된 페이지에서는 전통적인 iframe 기반 공격이 실패합니다.
  • 다만 더블 클릭재킹과 같은 복합 흐름은 일부 안전 조치만으로 탐지되지 않을 수 있으므로 다층 방어가 필요합니다.

보안 심층 강화 팁

  • CSP를 정교하게 구성해 스크립트 출처를 제한하세요(script-src, default-src 등).
  • 서드파티 스크립트 격리(비동기 로드, Subresource Integrity) 적용
  • 클릭-핵심 작업에 대해 서버 사이드 확인을 추가하세요(예: CSRF 토큰 재검증)
  • 사용자 입력과 상호작용 로그를 적절히 보관해 이상 패턴 탐지에 활용
  • 보안 릴리스 노트와 함께 패치 일정을 투명하게 공지

개인정보와 규제(간단한 주의 사항)

클릭재킹을 통해 계정 탈취나 개인 데이터 유출이 발생할 수 있습니다. 유럽연합의 GDPR이나 국내 개인정보보호법 관점에서 사용자 데이터가 노출되면 통지 의무와 함께 추가적 법적 책임이 발생할 수 있습니다. 사이트 운영자는 다음을 확인하세요:

  • 민감한 개인정보 처리 화면에 추가 인증 요구
  • 사고 시 통지 절차와 연락 창구 마련
  • 개인정보 최소 수집·최소 보관 원칙 준수

실제 적용 예시: Apache와 Nginx 설정 예

Apache (HTTP 헤더 추가):

Header always set X-Frame-Options "DENY"
Header always set Content-Security-Policy "frame-ancestors 'self'"

Nginx (server 블록):

add_header X-Frame-Options "DENY" always;
add_header Content-Security-Policy "frame-ancestors 'self'" always;

이 예시는 기본 패턴입니다. 비즈니스 특성상 외부 도메인을 허용해야 한다면 ‘self’ 대신 허용 도메인을 명시하세요.

언제 보고해야 하나

  • 사용자가 다수의 계정에서 비정상적 권한 부여를 경험할 때
  • 자동화된 도구 또는 사용자 신고로 오버레이/투명 레이어가 발견될 때
  • 다운로드 링크가 제대로 된 동작을 하지 않거나 이상한 확장 설치가 유발될 때

보고 시 포함할 내용: 문제가 발생한 URL, 재현 단계, 브라우저/확장 목록, 스크린샷(또는 캡처), 서버 로그(가능한 경우).

의사결정 도우미(간단한 흐름)

flowchart TD
  A[의심스러운 클릭/팝업 발견] --> B{사이트 신뢰 여부}
  B -->|신뢰됨| C[브라우저 개발자 도구로 네트워크/DOM 검사]
  B -->|신뢰되지 않음| D[즉시 페이지 닫기 및 URL 검사]
  C --> E{오버레이 발견}
  E -->|예| F[스크린샷 및 리포트, 운영자 연락]
  E -->|아니오| G[브라우저/확장 점검]
  D --> H[VirusTotal/urlscan 등으로 검사]
  H --> I[의심 시 추가 보안 조치]

소규모 조직을 위한 SOP(운영 표준 절차) 요약

  1. 신속 격리: 문제 페이지 임시 비활성화
  2. 통신: 내부 보안팀과 고객지원에 상황 공유
  3. 조사: 서드파티 스크립트, CDN 응답, 빌드 아티팩트 검사
  4. 패치: 헤더·CSP 수정, 악성 스크립트 제거
  5. 회복: 모니터링 강화 후 정상화
  6. 보고: 영향 범위와 대응 내역 고객 공지

1줄 용어집

  • 클릭재킹: 사용자 인터페이스를 속여 클릭을 가로채는 공격
  • X-Frame-Options: 브라우저에게 페이지를 다른 문서에서 프레임으로 로드할지 지시하는 헤더
  • frame-ancestors: CSP 지시문으로 어떤 출처에서 프레임 삽입을 허용할지 정의
  • 더블 클릭재킹: 두 번의 클릭 흐름을 이용해 권한을 탈취하는 고급 기법

언제 방심해도 되는가 (결론)

기본 보안 헤더와 정책을 적용하고 브라우저·확장을 최신으로 유지한 사이트는 대부분의 전통적 클릭재킹을 막을 수 있습니다. 그러나 더블 클릭재킹과 같은 복합 공격은 다층 방어, UI 설계 개선, 운영·개발팀 간의 빠른 대응 체계가 있어야 완전히 대응할 수 있습니다.

중요: 사용자는 의심스러운 팝업·추가 확인을 경계하고, 운영자는 헤더·CSP·sandbox를 기본으로 적용하세요.

요약

  • 클릭재킹은 실제 사이트 위에 오버레이를 겹쳐 클릭을 가로채는 공격입니다.
  • 브라우저 업데이트, 확장 관리, URL 검사로 사용자는 기본 보호를 할 수 있습니다.
  • 운영자는 X-Frame-Options와 CSP frame-ancestors, iframe sandbox를 적용해야 합니다.
  • 더블 클릭재킹에는 다층 방어와 명확한 UX/검증 흐름이 필요합니다.

요약 요점:

  • 브라우저와 확장을 최신으로 유지하세요.
  • 의심스러운 팝업이나 추가 클릭은 중단하세요.
  • 운영자는 정책과 헤더로 페이지를 보호하세요.
  • 사고 발생 시 신속히 격리·분석·복구하세요。

Image credit: Unsplash. All screenshots by Crystal Crowder.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Zoom 회의를 허가 없이 녹화하는 방법과 주의사항
가이드

Zoom 회의를 허가 없이 녹화하는 방법과 주의사항

Android 홈 화면별 배경화면 설정 가이드
안드로이드

Android 홈 화면별 배경화면 설정 가이드

Apache Tomcat 성능 카운터 및 이벤트 규칙 가이드
모니터링

Apache Tomcat 성능 카운터 및 이벤트 규칙 가이드

클릭재킹 완전 가이드: 보호 방법과 체크리스트
보안

클릭재킹 완전 가이드: 보호 방법과 체크리스트

안드로이드 홈 화면별 배경화면 설정 가이드
Android 가이드

안드로이드 홈 화면별 배경화면 설정 가이드

데이터 브로커에서 내 정보 삭제하는 방법
프라이버시

데이터 브로커에서 내 정보 삭제하는 방법