iframe이 위험하고 보안 위험으로 간주되는 이유는 무엇입니까?


124

iframe이 위험하고 보안 위험으로 간주되는 이유는 무엇입니까? 누군가 악의적으로 사용될 수있는 사례의 예를 설명 할 수 있습니까?


5
오래된 아내 이야기처럼 들립니다. 브라우저 창은 기본적으로 하나의 큰 iframe입니다.
Bill Criswell 2011 년

1
이미 stackoverflow에서 요청 되었습니다
Samich 2011 년

1
@Samich — 아니요, 구체적으로 보안 문제가 아니라 최선의 방법에 관한 것입니다 (내가 생각할 수있는 유일한 보안 문제는 iframe을 사용하는 타사 에서 발생 함 )
Quentin

모범 사례로 간주되지 않는 보안 정도는 아닙니다. 다음을 참조하십시오. stackoverflow.com/questions/1081315/why-developers-hate-iframes 사람들이 테이블, div를 사용하여 디자인 할 때 훨씬 더 인기가 있었지만 iframe이 필요 하지 않았습니다 .
RandomUs1r 2014-06-17

재미있게도 거의 10 년 후에 양식이 포함 된 모든 것을 iframe에 넣고 모든 타사 자바 스크립트 등으로부터 격리 된 모든 것을 양식이 수집되는 것을 방지하기 위해 필요하다는 내용의 기사가 나왔습니다. hackernoon.com/…
GordonM

답변:


83

다른 도메인의 콘텐츠를 표시하자마자 기본적으로 멀웨어를 제공하지 않도록 해당 도메인을 신뢰하게됩니다.

iframe 자체에는 문제가 없습니다. iframe의 콘텐츠를 제어하면 완벽하게 안전합니다.


19
다른 도메인 등의 콘텐츠에 연결하자마자… 이에 대한 iframe은 없습니다.
Quentin 2011 년

5
올바르게 구현 된 브라우저 (사용자 에이전트라고도 함)는 iframe 콘텐츠가 iframe 외부로 유출되는 것을 허용하지 않습니다. 호스트 문서 ( <iframe>요소가 포함 된 문서 )에 적절한 스타일이 있고 iframe에 신뢰할 수없는 콘텐츠가 포함되어 있음을 암시하는 경우 문제가 없습니다. 물론 브라우저의 모듈로 실제 취약성. 요컨대, an <iframe><a href>.
Mikko Rantalainen

2
동일한 도메인에 속한 숨겨진 iframe은 어떻습니까? 이것은 완전히 안전한가요?
Ciaran Gallagher

2
<iframe>동일한 도메인에서 숨겨진 경우 공격자가 숨겨진 iframe 내부의 콘텐츠를 수정할 수있는 경우 보안 위험이 발생할 수 있습니다. 그러면 공격자가 d 콘텐츠 <iframe>를 참조하는 사이트의 모든 페이지에 숨겨진 XSS 공격을 확장 할 수 <iframe>있습니다. 자세한 내용은 stackoverflow.com/a/9428051/334451 을 참조하십시오.
Mikko Rantalainen

흥미롭게도 iFrame은 실제로 반대 사례로부터 유용한 보호 수단이 될 수 있습니다. 사이트에 타사 스크립트가 많은 경우 양식을 격리해야합니다. 이를 수행하는 한 가지 제안 된 방법은 타사 자바 스크립트가없는 자체 최소 페이지에 양식을 넣고 호스트 페이지의 iframe에 표시하는 것입니다. hackernoon.com/…
GordonM

140

IFRAME경우 요소는 보안 위험이있을 수 있습니다 귀하의 사이트가 내부에 내장되어 IFRAME적대적인 사이트 . 자세한 내용은 Google "클릭 재킹"을 참조하십시오. 경우 문제가되지 않습니다 당신이 사용 <iframe>여부. 이 공격에 대한 유일한 실제 보호는 HTTP 헤더를 추가 X-Frame-Options: DENY하고 브라우저가 작업을 알고 있기를 바라는 것입니다.

또한 사이트의 페이지에 악용 될 수있는 XSS 취약점이있는 경우 IFRAME 요소가 보안 위험이 될 수 있습니다 . 이 경우 공격자는 <iframe>XSS 취약성이있는 페이지 내에서로드하도록 설득 할 수있는 동일한 도메인 내의 모든 페이지로 XSS 공격을 확장 할 수 있습니다 . 이는 동일한 출처 (동일한 도메인)의 콘텐츠가 상위 콘텐츠 DOM에 액세스 할 수 있기 때문입니다 (실제로 "호스트"문서에서 JavaScript를 실행). 이 공격에 대한 유일한 실제 보호 방법은 HTTP 헤더를 추가 X-Frame-Options: DENY하거나 항상 사용자가 제출 한 모든 데이터를 올바르게 인코딩하는 것입니다 (즉, 사이트에 XSS 취약성이 전혀 없습니다. 말처럼 쉬운 일이 아닙니다).

이것이 문제의 기술적 측면입니다. 또한 사용자 인터페이스 문제가 있습니다. 사용자가 링크를 클릭 할 때 URL 표시 줄이 변경되지 않아야한다고 믿도록 가르치면 (예 : 사이트에서 모든 실제 콘텐츠가 포함 된 큰 iframe을 사용함) 실제 보안의 경우에도 사용자는 미래에 아무것도 눈치 채지 못할 것입니다. 취약성. 예를 들어, 공격자가 iframe 내의 적대적인 소스에서 콘텐츠를로드 할 수 있도록하는 사이트 내에 XSS 취약점이있을 수 있습니다. URL 표시 줄이 여전히 이전 동작과 동일하게 보이고 (절대 변경되지 않음) 콘텐츠가 사용자 자격 증명을 요청하는 적대적인 도메인에서 왔음에도 불구하고 유효 해 보이기 때문에 누구도 차이를 구분할 수 없습니다.

누군가 <iframe>귀하의 사이트 에서 요소 를 사용하는 것이 위험하고 보안 위험을 유발 한다고 주장하는 경우 , 그는 <iframe>요소가 어떤 역할을하는지 이해하지 못 하거나 <iframe>브라우저 의 관련 취약점 가능성에 대해 말하는 것입니다 . <iframe src="...">태그의 보안은 브라우저에 취약점이없는 한 동일 <img src="..."하거나 그 이상 <a href="...">입니다. 그리고 적절한 취약성이 있다면 <iframe>, <img>또는 <a>요소 를 사용하지 않아도 트리거 할 수 있으므로이 문제에 대해 고려할 가치가 없습니다.

그러나의 콘텐츠는 <iframe>기본적으로 최상위 수준 탐색을 시작할 수 있습니다 . 즉,의 콘텐츠 <iframe>는 현재 페이지 위치에 대한 링크를 자동으로 열 수 있습니다 (새 위치는 주소 표시 줄에 표시됨). 이를 방지하는 유일한 방법은 sandbox값없이 속성 을 추가하는 것입니다 allow-top-navigation. 예를 들면 <iframe sandbox="allow-forms allow-scripts" ...>. 불행히도 샌드 박스는 항상 모든 플러그인을 비활성화합니다. 예를 들어 모든 Youtube 콘텐츠를 보려면 Flash 플레이어가 여전히 필요하기 때문에 Youtube 콘텐츠를 샌드 박스 할 수 없습니다. 플러그인 사용과 동시에 최상위 탐색을 허용하지 않는 브라우저는 없습니다.

참고 X-Frame-Options: DENY도 (또한 "로 알려진 내용 출처 간을 읽을 수있는 성능 측면 채널 공격 렌더링에서 보호 픽셀 완벽한 타이밍 공격을 ").


좋지만 "This is because content from the same origin (same domain) is allowed to access the parent content DOM (practically execute JavaScript in the "host" document)."iframe의 (하위) 문서에 대한 XSS 취약성을 포함하는 (부모) 문서의 방향으로 다시 표현 해서는 안 됩니까?
Shuzheng

@Shuzheng 취약점은 두 가지 방식으로 진행되며 <iframe>페이지에서 사용 하는 경우 iframe 내의 콘텐츠에서 호스트 문서로 취약점을 확장 할 수 있습니다. 문제는 <iframe>위험하다는 것이었고 호스트 문서에 XSS 취약성이 있다면 실제로 <iframe>요소 가 필요하지 않습니다 .
Mikko Rantalainen

13

나는 당신이 직접 제어한다면 아마도 위험이 더 낮을 것이기 때문에 교차 도메인 iFrame을 가정하고 있습니다.

  • 사이트가 iframe으로 포함 된 경우 클릭 재킹 이 문제입니다.
  • 손상된 iFrame은 악성 콘텐츠를 표시 할 수 있습니다 (iFrame에 광고 대신 로그인 상자가 표시되는 경우).
  • 포함 된 iframe은 경고 및 프롬프트와 같은 특정 JS 호출을 수행하여 사용자를 짜증나게 할 수 있습니다.
  • 포함 된 iframe은 location.href를 통해 리디렉션 할 수 있습니다 (yikes, bankofamerica.com에서 bankofamerica.fake.com으로 고객을 리디렉션하는 3p 프레임을 상상해보세요).
  • 3p 프레임 (java / flash / activeX) 내부의 악성 코드가 사용자를 감염시킬 수 있습니다.

2

사람들이 iframe을 언급 할 때 "위험"및 "보안 위험"이 가장 먼저 떠오르는 것은 아니지만 클릭 재킹 공격에 사용될 수 있습니다 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.