我目前正在开展一个项目,其中包括在不同浏览器中测试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;
如您所见,只执行第二个有效负载。
所以这是我的问题:
是否可以快速加载/重新加载/创建+删除iframe?(当然,很高兴能够解决问题的任何其他解决方案)
答案 0 :(得分:3)
试试这个
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;