프레임 킬러

Framekiller

프레임 킬러(또는 프레임버스터 또는 프레임브레이커)는 웹 사이트 및 웹 응용 프로그램에서 웹 페이지프레임 내에 표시되지 않도록 하기 위해 사용하는 기술입니다.프레임은 웹 브라우저 창의 하위 구분이며 더 작은 창처럼 작동할 수 있습니다.일반적으로 프레임 킬러는 웹 사이트가 프레임셋 내에서 허가 없이 로드되거나 클릭잭킹과 같이 공격으로 로드되는 것을 방지하기 위해 사용됩니다.

실장

Framekiller는 현재 창이 메인창인지 검증하는 JavaScript를 사용하여 구현됩니다.기본적으로 창 렌더링을 차단하고 현재 창이 주 창임을 확인한 후에만 차단을 해제하는 것이 좋습니다.

< >스타일.>html{표시:없음.;}< >/style> < >대본>    한다면 (자신 == 정상) {        문서.문서 요소.스타일..표시 = '블록';     } 또 다른 {        정상.위치 = 자신.위치;     } < >/script> 

이 접근방식은 Gustav Rydstedt, Elie Burstein, Dan Boneh 및 Collin Jackson에 의해 2010년에 [1]제안되었으며 기존 프레임 버스트 기술의 한계를 우회할 수 있는 기술과 함께 강조했습니다.

대체 솔루션

다른 방법으로 사용자가 Framekiller를 동작시킬지 여부를 결정할 수 있습니다.

변화하다 프레임 킬러 = 거짓의; 윈도.언로드 전 = 기능.() {    한다면 (프레임 킬러) {     돌아가다 "...";  // 사용자의 결정에 도움이 되는 메시지   } }; 

프레임 태그 뒤에 다음 코드를 추가해야 합니다.

// 페이지에 있는 프레임의 실제 ID에 따라 "my_frame"을 변경해야 합니다. 문서.요소 취득 기준아이디("my_frame").부하를 하다 = 기능.() {    프레임 킬러 = 진실의; }; 

오리지널 프레임 킬러

지금까지 최초의 framekiller 스크립트는 다음과 같이 단순했습니다.

< >대본 유형="텍스트/스크립트 작성">   한다면 (정상 != 자신) 정상.위치.교체하다(위치); < >/script> 

여기서 논리는 페이지를 표시하는 것이지만, 상단 위치가 현재 페이지와 동일한지 확인하고, 그렇지 않은 경우 상단을 전류로 바꿉니다.그러나 이 메서드는 외부 [1]프레임에서 프레임버스터 스크립트의 실행을 차단함으로써 쉽게 우회할 수 있습니다.

Framekiller 제한

클라이언트 측 JavaScript 솔루션은 최종 사용자의 브라우저에 의존하여 자체 보안을 적용합니다.이로 인해 다른 페이지에 페이지를 삽입할 수 없도록 하는 유익하지만 신뢰할 수 없는 수단이 됩니다.다음의 상황에서는, 상기의 스크립트가 무효가 되는 일이 있습니다.

  • 사용자 에이전트는 JavaScript를 지원하지 않습니다.
  • 사용자 에이전트가 JavaScript를 지원하지만 사용자가 지원을 해제했습니다.
  • 사용자 에이전트의 JavaScript 지원에 결함이 있거나 부분적으로 구현되었습니다.

안티프레임킬러

HTML5의 iframe에는샌드박스 속성.[2]속성 값은 iframe 콘텐츠에 대해 허용되는 기능 집합입니다.값이 비어 있거나 설정되지 않은 경우 iframe의 콘텐츠는 JavaScript를 실행하지 않으며 최상위 탐색을 허용하지 않습니다.값의 예외 집합을 공백으로 구분하여 allow-scripts를 지정함으로써 iframe은 JavaScript를 허용하지만 여전히 최상위 수준의 네비게이션은 허용하지 않으며 iframe 내의 프레임 킬러가 비활성화됩니다.

「 」를 참조해 주세요.

  • 클릭잭킹 - X-Frame-Options 헤더와 같은 프레임에 내장되지 않도록 하는 보다 정교한 방법을 설명합니다.

레퍼런스

  1. ^ a b G. Rydstedt; E. Bursztein; D. Boneh; C. Jackson (2010). "Busting Frame Busting: a Study of Clickjacking Vulnerabilities on Popular sites". 3rd Web 2.0 Security and Privacy workshop. IEEE.
  2. ^ "Archived copy". Archived from the original on 2013-06-06. Retrieved 2014-11-01.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)