2014-12-18 5 views
0

상황 : 신뢰할 수있는 사이트에서 iframe을 허용하려는 위젯이 있습니다. 잠재적 인 Clickjacking 공격을 완화하기 위해 위젯이 도메인 허용 목록에 대해로드 될 때 리퍼러를 확인하려고합니다. 일치 = 위젯이 사용 중지되었습니다.document.referrer가 위조 될 수 있습니까?

나는 Flash를 사용하여 Referer 헤더로 임의의 HTTP 요청을 보낼 수 있음을 알고 있습니다. document.referrer도 유사하게 취약합니까?

참고 : 사용자가 설정을 변경할 수 있고 다른 상황으로 인해 document.referrer가 비어있을 수 있음을 알고 있습니다. 괜찮습니다. 항상 작동하는 위젯은 웹 사이트를 포함하는 웹 사이트가 신뢰할 수없는 경우 작동하지 않는 것보다 중요하지 않습니다.

수정 : ALL-FROM이 Chrome 또는 Safari에 구현되어 있지 않으므로 X-Frame-Options가 작동하지 않습니다. 제 3 자 도메인을 지원할 수 있어야합니다.

+2

훨씬 더 좋은 방법이 있습니다. 'x-frame-options' 헤더를 사용하십시오. – meagar

+0

서버가 Referer 헤더 또는 Origin 헤더를 확인하고이를 기반으로 X-Frame-Options를 설정 했어도 괜찮습니까? – guest

+0

@guest 그것은 좋은 질문입니다. 플래시 취약점이 위조 된 헤더가있는 iframe의 콘텐츠로드까지 확장되는지는 분명하지 않습니다. – noah

답변

1

Referer 헤더와 document.referrer를 지울 수있는 것으로 알려져 있습니다 (예 : 데이터 URI에서 오는 것). undefined document.referrer를 허용하지 않으면 공격자에게 의도하지 않은 액세스가 허용되지 않습니다.

또한 Flash가 공격자 제어 Referer 헤더로 요청할 수 있다고 선언합니다. 그러나이 경우 응답을 서버 원본의 문서로 렌더링 할 수 없습니다. 그들은 그것으로 어떤 클릭 재킹 공격도 할 수 없을 것입니다. 어쩌면 CSRF 일지 모르겠습니다.

요청이 iframe에서 전송 된 경우 브라우저는 올바른 참조자를 보냅니다.


document.referrer와 사소한 문제는 당신이 URL 문자열에서 무엇 도메인 파악해야한다는 것입니다. 당신이 어떻게하는지에 대해 조심해야합니다.

2

예. 당신은 말 그대로 수행 할 수 있습니다

document.referrer = "http://foobar.com"; 

당신은 귀하의 사이트가 신뢰할 수있는 사이트에 iframe이 될 수 있도록하려면

, 당신은 X-Frame-Options HTTP 응답 헤더를 사용합니다.

MDN Developer article for X-Frame-Options

편집 : 완전히 지원하지 않는 브라우저에서이 작업을해야하는 경우 X-프레임을-옵션 다음은 '외부'사이트 서버가 호스팅와 통신함으로써 더 복잡한 무언가를 필요 iframe 사이트에서 클라이언트 IP 주소에 연결된 단일 사용 토큰을 요청하고이를 사용하여 액세스를 승인/거부합니다.

+0

좋아,하지만 iframe을 받고있는 페이지를 제어한다면, 그렇게하지 않을 것이다. X-Frame-Chrome 또는 Safari에서는 다른 도메인에 대한 옵션 지원이 구현되지 않습니다. – noah

+0

다른 위협 모델 – guest

+0

@noah 임베딩을 수행하는 사이트가 사용자가 제어하는 ​​사이트 인 경우 X-Frame-Options없이이를 수행하는 방법에 대한 제안으로 내 게시물을 업데이트했습니다. – PhonicUK

관련 문제