콘텐츠마케팅

Iframe 깨기: 콘텐츠의 무단 iframe 중지 방법

내 사이트 방문자가 내 링크 중 하나를 클릭했을 때 나에게 알린 적이 있습니다. 트위터; 그는 큰 팝업과 악성 코드 경고와 함께 내 사이트로 이동했습니다. 그것은 누군가를 겁주기에 충분해서 몇 가지 테스트를 시작했습니다. 내 사이트에는 아무 문제가 없었습니다. 문제는 링크였습니다.

다른 사이트의 링크는 사람들이 아래의 iframe에 내 사이트를 로드하는 동안 악의적인 링크를 클릭하도록 유도하는 툴바를 위쪽에 생성했습니다. 대부분의 사람들에게 내 사이트는 악성 코드를 퍼뜨리는 것처럼 보일 수 있습니다. 나는 iframe 내에서 내 사이트를 로드하는 사이트를 좋아한다고 말하지 않을 것입니다. 그래서 합리적인 괴짜라면 할 일을 했습니다... 프레임 브레이커를 로드했습니다.

그러나 귀하의 사이트를 iframe으로 만드는 것이 항상 악의적인 것은 아닙니다. 우리는 최근 도구를 공유했습니다. Sniply클릭 유도 문안 추가(CTA) 귀하가 공유하는 모든 웹사이트 링크로. 전체 사이트를 iframe에 삽입하고 클릭 유도문안을 사용하여 콘텐츠에 div를 적용하여 이를 수행합니다.

하지만 저는 제 콘텐츠와 제가 쏟은 노력에 대해 꽤 까다롭습니다. Martech Zone, 그래서 나는 링크 공유 플랫폼을 사용하는 경우에도 누군가가 내 콘텐츠를 iframe하는 것을 원하지 않습니다. 일부 연구를 수행할 때 이를 처리할 수 있는 몇 가지 방법이 있습니다.

JavaScript로 콘텐츠 iframe을 중지하는 방법

이 JavaScript 코드는 현재 창(self)가 최상위 창(top). 그렇지 않은 경우 이는 페이지가 프레임, iframe 또는 유사 항목에 있고 스크립트가 맨 위 창을 다음으로 리디렉션함을 의미합니다. URL 현재 창의. 이것은 효과적으로 발발 아이프레임의.

<script type='text/javascript'>
if (top !== self) top.location.href = self.location.href;
</script>

이 접근 방식에는 몇 가지 단점이 있습니다.

  1. JavaScript에 의존: 사용자가 JavaScript를 비활성화한 경우 이 방법이 작동하지 않습니다.
  2. 지연: JavaScript가 실행되기 전에 약간의 지연이 있을 수 있으며 그 동안 사이트의 프레임 버전이 계속 표시될 수 있습니다.
  3. 교차 출처 제한: 경우에 따라 동일 원본 정책으로 인해 이 스크립트가 의도한 대로 작동하지 않을 수 있습니다. 상위 문서가 다른 도메인에 있는 경우 액세스하지 못할 수 있습니다. top.location.href.
  4. 프레임 버스팅 버스터의 가능성: 프레임 버스팅 스크립트가 작동하지 않도록 방지할 수 있는 스크립트(프레임 버스팅 버스터라고 함)도 있습니다.

더 나은 접근 방식은 HTTP 응답 헤더를 활용하는 것입니다.

X-Frame-Options 및 Content-Security-Policy

모두 X-Frame-OptionsContent-Security-Policy (CSP)는 웹 사이트의 보안을 강화하는 데 사용되는 HTTP 응답 헤더입니다. 그들은 각각 약간 다른 용도로 사용되며 유연성 수준이 다릅니다.

X-Frame-Options 귀하의 사이트를 <frame>, <iframe>, <embed><object> 다른 사이트에서. 세 가지 가능한 지시어가 있습니다.

  1. DENY – 시도하는 사이트와 관계없이 페이지를 프레임에 표시할 수 없습니다.
  2. SAMEORIGIN – 페이지는 페이지 자체와 동일한 출처의 프레임에만 표시될 수 있습니다.
  3. ALLOW-FROM uri – 페이지는 지정된 원본의 프레임에만 표시될 수 있습니다.

그러나, X-Frame-Options 여러 다른 출처에서 프레이밍을 허용하거나 하위 도메인에 와일드카드를 사용하는 것과 같은 더 복잡한 시나리오를 처리할 수 없다는 점에서 제한됩니다. 모든 브라우저가 지원하는 것은 아닙니다. ALLOW-FROM 지침.

Content-Security-Policy반면에 훨씬 더 유연하고 강력한 HTTP 헤더입니다. 모든 것을 할 수 있는 반면 X-Frame-Options 훨씬 더 많은 일을 할 수 있으며 주요 목적은 교차 사이트 스크립팅을 포함한 광범위한 코드 주입 공격을 방지하는 것입니다.XSS) 및 클릭재킹. 신뢰할 수 있는 콘텐츠 소스(스크립트, 스타일, 이미지 등)의 화이트리스트를 지정하여 작동합니다.

프레임 제어를 위해 CSP는 frame-ancestors 지령. 여러 도메인 및 와일드카드 하위 도메인을 포함하여 여러 소스를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

cssCopy codeContent-Security-Policy: frame-ancestors 'self' yourdomain.com *.domain2.com;

이렇게 하면 페이지가 자체 사이트('self'), on yourdomain.com및 의 모든 하위 도메인에서 domain2.com.

CSP는 대체품으로 권장되고 있습니다. X-Frame-Options, 모든 것을 다룰 수 있기 때문에 X-Frame-Options 할 수 있습니다. 대부분의 최신 브라우저는 CSP를 지원하지만 아직 CSP를 완전히 지원하지 않는 오래되었거나 덜 일반적인 브라우저가 있을 수 있습니다.

HTML로 콘텐츠의 iframe을 중지하는 방법

이제 콘텐츠를 iframe하는 기능을 비활성화하는 배포할 수 있는 Content-Security-Policy 메타 태그가 있습니다.

<meta http-equiv="Content-Security-Policy" content="frame-ancestors 'self' yourdomain.com">

모든 브라우저가 HTML 메타 태그를 존중하는 것은 아니기 때문에 HTML 메타 태그의 효과는 제한적 Content-Security-Policy 메타 태그를 사용하여 설정할 때.

HTTP 헤더로 콘텐츠 iframe을 중지하는 방법

HTTP 헤더를 사용하는 것이 좋습니다. X-Frame-Options or Content-Security-Policy 프레이밍을 제어합니다. 이러한 옵션은 보다 안정적이고 안전하며 JavaScript가 비활성화된 경우에도 작동합니다. JavaScript 메서드는 HTTP 헤더를 설정하기 위해 서버를 제어할 수 없는 경우 최후의 수단으로만 사용해야 합니다. 각 예에 대해 yourdomain.com 실제 도메인으로.

아파치 – 수정 .htaccess 파일은 다음과 같습니다.

Header always set X-Frame-Options SAMEORIGIN
Header always set Content-Security-Policy "frame-ancestors 'self' yourdomain.com"

Nginx에 – 다음과 같이 서버 블록을 수정합니다.

add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy "frame-ancestors 'self' yourdomain.com";

IIS – 다음을 추가하여 수행하십시오. web.config 파일 :

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Content-Security-Policy" value="frame-ancestors 'self' yourdomain.com" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

워드프레스(WordPress) – functions.php 파일에 이 코드를 추가하면 됩니다.

function add_security_headers() {
  header('X-Frame-Options: SAMEORIGIN');
  header("Content-Security-Policy: frame-ancestors 'self' yourdomain.com");
}
add_action('send_headers', 'add_security_headers');

이러한 구성을 사용하면 도메인 하위 도메인이 아닌 지정한 정확한 도메인의 iframe 내에만 페이지를 포함할 수 있습니다. 특정 하위 도메인을 허용하려면 다음과 같이 명시적으로 나열해야 합니다. subdomain1.yourdomain.com subdomain2.yourdomain.com, 등등.

여러 도메인의 콘텐츠를 Iframe으로 허용

Content-Security-Policy HTTP 응답 헤더 및 frame-ancestors 지시문을 사용하여 여러 도메인을 지정할 수 있습니다. 공백은 각 도메인을 구분해야 합니다. 예를 들면 다음과 같습니다.

Content-Security-Policy: frame-ancestors 'self' domain1.com domain2.com domain3.com;

아파치 – 수정 .htaccess 파일은 다음과 같습니다.

Header always set X-Frame-Options SAMEORIGINHeader always set Content-Security-Policy "frame-ancestors 'self' domain1.com domain2.com domain3.com"

Nginx에 – 다음과 같이 서버 블록을 수정합니다.

add_header X-Frame-Options SAMEORIGIN;add_header Content-Security-Policy "frame-ancestors 'self' domain1.com domain2.com domain3.com";

IIS – 다음을 추가하여 수행하십시오. web.config 파일 :

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
      <add name="Content-Security-Policy" value="frame-ancestors 'self' domain1.com domain2.com domain3.com" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

와일드카드 도메인에서 콘텐츠를 Iframe으로 허용

다음을 사용하여 모든 하위 도메인에 대해 와일드카드를 지정할 수도 있습니다. Content-Security-Policy HTTP 응답 헤더 및 프레임 조상 지시어. 다음은 Content-Security-Policy 업데이트가 필요한 코드:

Content-Security-Policy: frame-ancestors 'self' *.yourdomain.com;

아파치 – 수정 .htaccess 파일은 다음과 같습니다.

Header always set Content-Security-Policy "frame-ancestors 'self' *.yourdomain.com"

Nginx에 – 다음과 같이 서버 블록을 수정합니다.

add_header Content-Security-Policy "frame-ancestors 'self' *.domain1.com *.domain2.com *.domain3.com";

IIS – 다음을 추가하여 수행하십시오. web.config 파일 :

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Content-Security-Policy" value="frame-ancestors 'self' *.yourdomain.com" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

Douglas Karr

Douglas Karr 의 CMO입니다. 오픈인사이트 그리고 설립자 Martech Zone. Douglas는 수십 개의 성공적인 MarTech 스타트업을 도왔고, Martech 인수 및 투자에서 5억 달러가 넘는 실사를 도왔으며, 기업이 판매 및 마케팅 전략을 구현하고 자동화하도록 지속적으로 지원하고 있습니다. Douglas는 국제적으로 인정받는 디지털 혁신이자 MarTech 전문가이자 연설가입니다. Douglas는 Dummie's Guide와 비즈니스 리더십 서적을 집필한 작가이기도 합니다.

관련 기사

맨 위로 가기 버튼
닫기

애드블록 감지됨

Martech Zone 은(는) 광고 수익, 제휴 링크 및 후원을 통해 사이트에서 수익을 창출하기 때문에 이 콘텐츠를 무료로 제공할 수 있습니다. 사이트를 볼 때 광고 차단기를 제거해 주시면 감사하겠습니다.