Как часть ошибки XSS, которую я пытаюсь продемонстрировать клиенту, я пытаюсь внедрить некоторый JavaScript, который будет
- получить веб-страницу,
- изменить источник этой веб-страницы и
- создает iframe с новым источником.
Вот код, который у меня есть:
<script>
function getSource()
{
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var content=xmlhttp.responseText;
content = content.replace(/hey/gi, "howdy");
var ifrm = document.getElementById('myIframe');
ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
ifrm.document.open();
ifrm.document.write(content);
ifrm.document.close();
}
}
xmlhttp.open("GET","http://www.site.com/pagetopull.html",true);
xmlhttp.send();
}
</script>
<button onclick="getSource();">click</button>
<iframe id="myIframe"></iframe>
Если у меня есть этот код, завернутый в html-теги, а затем сделать его на своей собственной странице и нажать «щелкнуть», код выполняется отлично, и найденная страница отображается в iframe. Однако, когда я внедряю этот код в свою тестовую поверхность, появляется iframe, но нажатие кнопки не выполняет функцию и возвращает нужную веб-страницу. Я получаю страницу из того же домена, поэтому она не нарушает ту же политику происхождения (насколько я знаю). Может кто-нибудь сказать мне, что я делаю не так? Большое спасибо.