0Pricing
HTML Academy · 강의

iframe 보안 클릭재킹 및 X-Frame-Options

X-Frame-Options와 CSP로 클릭재킹 공격 방지하기

iframe 보안 클릭재킹 및 X-Frame-Options은(는) CoddyKit의 무료 HTML Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 HTML Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. HTML Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

클릭재킹이란 무엇입니까

클릭재킹(UI 변조)은 미끼 페이지 위에 투명한 아이프레임으로 대상 사이트를 삽입하는 공격입니다. 사용자는 미끼를 클릭한다고 생각하지만 실제로는 아래에 숨겨진 인증된 페이지를 클릭하여, 알지 못하는 사이 대상 사이트에서 동작을 실행하게 됩니다.

클릭재킹 공격 작동 방식

공격자는 투명한 아이프레임에 victim.com을 로드하고 그 위에 "Click to win!" 버튼을 배치합니다. 사용자가 클릭하면 실제로는 victim.com의 "Delete Account" 버튼을 클릭하게 됩니다. victim.com의 세션 쿠키를 통해 사용자 본인으로 인증된 상태이므로 피싱이 필요하지 않습니다.

X-Frame-Options 헤더

X-Frame-Options: DENY는 어떤 아이프레임에서도 페이지가 로드되지 않도록 합니다. X-Frame-Options: SAMEORIGIN은 동일한 출처의 페이지에서만 아이프레임 삽입을 허용합니다. 클릭재킹을 방지하려면 인증이 필요한 모든 페이지에 이 헤더를 서버 측에서 설정하십시오.

콘텐츠 보안 정책의 frame-ancestors

Content-Security-Policy: frame-ancestors 'none'은 X-Frame-Options: DENY를 대체하는 현대적이고 더 유연한 방법입니다. frame-ancestors 'self'는 SAMEORIGIN을 대체합니다. frame-ancestors를 사용하면 다음과 같이 신뢰할 수 있는 특정 출처도 허용할 수 있습니다. frame-ancestors https://trusted.example.com.

JavaScript 프레임 탈출

기존의 프레임 탈출 방식은 JavaScript를 사용하여 프레임에서 빠져나왔습니다. sandbox 속성이 프레임 탈출 스크립트를 차단하므로 이러한 방식은 쉽게 무력화됩니다. 항상 서버 측 헤더(X-Frame-Options 또는 CSP frame-ancestors)를 사용하십시오. JavaScript를 이용한 프레임 탈출은 신뢰할 수 없습니다.

프레임 삽입을 허용하는 경우

프레임 삽입의 정당한 사용 사례는 다음과 같습니다. 자신의 출처에 있는 자체 콘텐츠 삽입(SAMEORIGIN), 특정 파트너가 자신의 위젯을 삽입하도록 허용(frame-ancestors에 특정 출처 지정). 이러한 경우는 허용하고 나머지는 모두 거부하도록 정책을 설계하십시오.

조합 방식

최대한 폭넓게 지원하려면 X-Frame-Options(구형 브라우저용)와 CSP frame-ancestors(현대 브라우저용)를 모두 설정하십시오. 둘 다 존재할 때 CSP를 지원하는 브라우저에서는 frame-ancestors가 우선합니다. 두 헤더를 함께 전송하면 모든 사용자 에이전트에서 클릭재킹을 방지할 수 있습니다.

동일 출처 아이프레임의 위험

동일 출처 아이프레임도 위험할 수 있습니다. 삽입된 페이지에 저장된 XSS가 있으면 동일 출처인 경우 parent.document를 통해 부모 문서에 접근할 수 있습니다. 부모에 접근할 필요가 없는 동일 출처 아이프레임에는 allow-same-origin을 허용하지 않는 sandbox를 사용하여 삽입된 콘텐츠의 취약점으로 인한 피해를 제한하십시오.

보호 기능 테스트

클릭재킹 방어를 확인하려면 브라우저의 네트워크 탭에서 응답 헤더에 X-Frame-Options 또는 CSP frame-ancestors가 있는지 확인하십시오. securityheaders.com 같은 도구는 헤더를 분석합니다. 사이트를 가리키는 아이프레임이 있는 테스트용 HTML 페이지를 만들고 로드에 실패하는지 확인하십시오.

타사 삽입 콘텐츠

타사 콘텐츠(YouTube, Google 지도)를 삽입할 때는 여러분이 프레임을 삽입하는 사이트입니다. 삽입된 서비스가 자체 X-Frame-Options 정책에서 프레임 삽입을 허용하는지 확인하십시오. 프레임 삽입을 차단하는 사이트는 삽입할 수 없습니다. 이는 의도된 동작이며 삽입된 서비스의 사용자를 보호합니다.

메타 태그의 CSP frame-ancestors

대부분의 CSP 지시어와 달리 frame-ancestors는 HTTP-equiv 메타 태그로 설정할 수 없으며 HTTP 응답 헤더로 전달해야 합니다. 이렇게 하면 브라우저가 메타 태그를 읽기 전에 공격자가 삽입된 HTML을 조작하여 보호 기능을 제거할 수 없습니다.

지식 확인

JavaScript 프레임 탈출 코드가 신뢰할 수 없는 클릭재킹 방어 수단인 이유는 무엇입니까?

요약

클릭재킹은 인증된 페이지를 투명한 아이프레임에 삽입하여 클릭을 가로챕니다. 방어 방법은 서버 측에서 X-Frame-Options: DENY 또는 CSP의 frame-ancestors: none 헤더를 설정하는 것입니다. 여러 브라우저를 지원하려면 두 헤더를 모두 설정하십시오. JavaScript 프레임 탈출은 신뢰할 수 없으므로 항상 HTTP 헤더를 사용해야 합니다. frame-ancestors는 X-Frame-Options로는 불가능한 세밀한 신뢰 출처 허용 목록을 제공합니다.

자주 묻는 질문

“iframe 보안 클릭재킹 및 X-Frame-Options” 강의는 무료인가요?

네 — “iframe 보안 클릭재킹 및 X-Frame-Options” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 HTML Academy 강의 전체를 잠금 해제할 수 있습니다. HTML Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“iframe 보안 클릭재킹 및 X-Frame-Options”에서 뭘 배우나요?

X-Frame-Options와 CSP로 클릭재킹 공격 방지하기 브라우저에서 직접 실행하는 실습 코드로 HTML Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

HTML Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 HTML Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“iframe 보안 클릭재킹 및 X-Frame-Options” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 HTML Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 HTML Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. iframe 요소 src 및 sandbox
  2. iframe 보안 클릭재킹 및 X-Frame-Options
  3. embed 및 object 요소
  4. iframe 지연 로딩
← HTML Academy(으)로 돌아가기