是否可以快速重新加载iframe?

时间:2018-03-13 17:54:29

标签: javascript html iframe xss

我目前正在开展一个项目,其中包括在不同浏览器中测试XSS有效负载。目标是找出有效载荷是否仍然有效。 我解决此问题的方法是将每个有效负载加载到单独的或新的iframe中。由于我将测试大量有效载荷,因此简单地指定每个有效载荷的一个专用iframe似乎不可行。因此,我需要一个接一个地将有效负载加载到iframe中。

我尝试通过设置iframe的src-Attribute来重新加载iframe,如下所示:



function testing_iframe2(iframe_id,payload)
{
	//Does work one time, though not consecutively
	document.getElementById(iframe_id).src = "data:text/html," + payload;
}

testing_iframe2("frame1",'<button onfocus="alert(1)" autofocus>');
testing_iframe2("frame1",'<svg/onload="alert(4)">');
&#13;
<html>
<body>
<iframe id="frame1" class="frames"></iframe>
</body>
</html>
&#13;
&#13;
&#13;

如您所见,只执行第二个有效负载。

所以这是我的问题:

是否可以快速加载/重新加载/创建+删除iframe?(当然,很高兴能够解决问题的任何其他解决方案)

1 个答案:

答案 0 :(得分:3)

试试这个

&#13;
&#13;
var iframe = document.getElementById("iframe1");
var testes = [
 '<svg onload="alert(1);" />',
 '<svg onload="alert(2);" />'
];


iframe.onload = function(){
  if(testes.length > 0){
    iframe.src = "data:text/html," + testes.shift();
  }
}

iframe.onload();
&#13;
<iframe id="iframe1"></iframe>
&#13;
&#13;
&#13;