2011-03-22 1 views
0

프레임 내에 동일한 도메인에 다른 페이지를 포함하는 페이지가 있습니다. 프레임 된 페이지의 스크립트가 최상위 페이지 DOM을 조작 할 수 없도록 방지 할 수 있습니까 (예 : 요소 또는 스크립트 추가)?하위 iframe 스크립트에 대한 부모 DOM 조작 금지

답변

0

당신은 .. "위험"기능을하지만 같은 그들에게 뭔가를 익명 참조를 저장하는 치우는와 등

(function(){ 
    var hiddenrefs = {}; 

    hiddenrefs.dGetElementById = document.getElementById; 
    document.getElementById = null; 
})(); 

하고 실험 할 수있다. 그러나 이것은 매우 지루한 직업이며 어쨌든 실패 할 것입니다. 이것이 사용자가 iframe 내부의 제어 된 환경에서 Javascript를 실행할 수 있도록하려는 시도 인 경우 이는 잘못된 보안 형식입니다. iframe은 top.location = "http://www.myevilpage.com"을 발행 할 수 있습니다.이 경우 어쨌든 게임은 끝납니다. (이것은 다른 도메인에서도 마찬가지입니다. iframe은 엄밀히 말하면 부모의 DOM에 액세스 할 수 없더라도 사용자와 모든 종류의 불쾌한 콘텐츠를 리디렉션 할 수 있습니다.) 사용자가 JS 코드를 실행하게하면 악성 코드의 소스 코드, 심지어는 필터링을 거치더라도 필터링을 우회하는 것이 쉽기 때문에 매우 안전하지 않습니다. 많은 사람들이 시도했지만 많은 사람들이 실패했습니다. 사용자가 Javascript를 실행할 수 없게하는 것이 좋습니다.

0

최상의 해결책은 iframe에서 HTML5 샌드 박스 특성을 사용하는 것입니다 (기본적으로) 스크립팅과 부모 DOM에 대한 동일한 출처 액세스를 명시 적으로 비활성화합니다.

http://msdn.microsoft.com/en-us/hh563496.aspx