Внедренная функция JavaScript не выполняется - PullRequest
2 голосов
/ 19 января 2012

Как часть ошибки XSS, которую я пытаюсь продемонстрировать клиенту, я пытаюсь внедрить некоторый JavaScript, который будет

  1. получить веб-страницу,
  2. изменить источник этой веб-страницы и
  3. создает 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, но нажатие кнопки не выполняет функцию и возвращает нужную веб-страницу. Я получаю страницу из того же домена, поэтому она не нарушает ту же политику происхождения (насколько я знаю). Может кто-нибудь сказать мне, что я делаю не так? Большое спасибо.

1 Ответ

1 голос
/ 19 января 2012

Это связано с тем, что по умолчанию содержимое тегов SCRIPT игнорируется.Вы должны просмотреть дерево DOM полученных HTML-данных для объектов SCRIPT и eval их содержимое вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...