Programing

내 사이트 페이지가 iFrame의 타사 사이트 프레임을 통해로드되는 것을 방지하는 방법

lottogame 2020. 10. 26. 07:37
반응형

내 사이트 페이지가 iFrame의 타사 사이트 프레임을 통해로드되는 것을 방지하는 방법


페이지를로드하는 동안 내 페이지가 다른 사이트에 프레임으로 포함되었는지 어떻게 알 수 있습니까? 리퍼러 요청 헤더가 여기서 나를 도울 수 없다고 생각합니까? 감사.


서버 측에서는 확인할 수 없지만 페이지가로드 된 후 자바 스크립트를 사용하여 감지 할 수 있습니다. 비교 topself, 동일하지 않은 경우 프레임에 있습니다.

또한 일부 최신 브라우저 X-FRAME-OPTIONS는 두 가지 값을 가질 수있는 헤더를 존중 합니다.

  • DENY – 페이지가 프레임에 포함되어있는 경우 렌더링되지 않도록합니다.
  • SAMEORIGIN – 페이지가 최상위 프레임 셋 홀더와 동일한 도메인에 속하지 않는 한 위와 동일합니다.

사용자는 프레임에 삽입 할 수없는 Google의 Picasa를 포함합니다.

최소 버전의 헤더를 지원하는 브라우저 :

  • IE8 및 IE9
  • 오페라 10.50
  • Safari 4
  • 크롬 4.1.249.1042
  • Firefox 3.6.9 ( NoScript가있는 이전 버전 )

Stackoverflow에는 테스트 할 JS가 포함되어 있습니다 ( master.js). 이것은 관련 부분입니다.

if(top!=self){
    top.location.replace(document.location);
    alert("For security reasons, framing is not allowed; click OK to remove the frames.")
}

그러나 JS를 비활성화 할 수 있습니다.


위해 최신 브라우저 , 당신은 표준 CSP (콘텐츠 보안 정책을) 사용할 수 있습니다. 다음 헤더는 문서가 프레임에 어디에서든로드되지 않도록합니다.

Content-Security-Policy: frame-ancestors 'none'

(IE 11에는 X-접두사 가 필요합니다 ). 'none'자신의 사이트와 같이 프레이밍이 허용되는 출처로 변경할 수도 있습니다 .

이전 브라우저를 다루기 위해 @Maerlyn의 답변 과 함께 사용하는 것이 가장 좋습니다 .


자바 스크립트로 iframe에서 페이지를로드하지 못하도록 할 수 있습니다.

<script type="text/javascript">
if ( window.self !== window.top ) {
    window.top.location.href=window.location.href;
}
</script>

이 코드는 페이지의 iframe 컨테이너 주소를 페이지 주소로 변경하고 컨테이너가 페이지를 표시하도록합니다.


또는 일부 위치의 콘텐츠는 신경 쓰지 않지만 특정 사이트에서는 원하지 않는 경우 특정 도메인을 차단할 수 있습니다. 예를 들어 offendingdomain.com콘텐츠를 포함하는 경우 다음을 수행 할 수 있습니다.

<script type="text/javascript">
    if(document.referrer.indexOf("offendingdomain.com") != -1) {
        window.location = "http://www.youtube.com/watch_popup?v=oHg5SJYRHA0";
    }
</script>

이것은 상위 문서의 위치를 ​​확인하고 offendingdomain.com콘텐츠를 포함하고 있는지 확인합니다. 이 스크립트는 처벌로 iframe을 특정 유명한 YouTube 비디오로 보냅니다. 실제로 그들은 단지 Rick-Rolled였습니다.


javascript를 사용하여 php 파일 끝에 다음 스크립트를 배치하여 iframe에로드되었는지 확인하고 경고를 표시하는 페이지로 리디렉션하거나 iframe을 사용하여 페이지를로드하면 안됨을 확인합니다.

<script type="text/javascript">
if(top.location != window.location) {
    window.location = '/error_iframe.php';
}
</script>

참고 URL : https://stackoverflow.com/questions/2896623/how-to-prevent-my-site-page-to-be-loaded-via-3rd-party-site-frame-of-iframe

반응형