客戶端腳本正在將一些HTML從服務器拉入頁內彈出框(shadowbox等)。沒有<script>標記的JavaScript代碼注入
我懷疑這是通過jQuery的.html()
某處。
長話短說,下面將失敗:
<script type="text/javascript"> myFunc(); </script>
不幸的是,我不能修改客戶端代碼(所以我無法通過,並通過一個備選信道執行JavaScript代碼)。我得到這個工作
一種方式是通過返回下面的HTML的一部分:
<img src="." onerror=" myFunc(); "/>
現在回想起來,我可以用一個有效的圖片網址onload
,但如果這兩個事件的工作,我d寧願使用不良路徑使瀏覽器立即引起調用(並減少一次HTTP /緩存查找)。
至於迄今爲止的設置,我希望聽到您對此的看法,也許是更好的解決方案。
編輯:
假設這是我不能亂用的客戶端代碼:
jQuery.get('test.php',function(data){
jQuery('#popup').html(data);
});
這是由test.php
返回的數據:
Hello!
<script type=text/javascript> myFunc(); </script>
而且以下是我提出的解決方案:
Hello!
<img src="." onerror=" myFunc(); "/>
我敢肯定,如果頁面通過AJAX拉動HTML,那麼你必須通過某種事件觸發你的JS。你唯一的缺點是它是一個額外的服務器平臺。 – 2011-04-22 20:04:48
你是否意識到你基本上在問如何做潛在的XSS攻擊? – BalusC 2011-04-22 20:05:04
@BalusC - 如果它運行在同一個域上,爲什麼它會是XSS?我只需要從一個HTML塊中執行JS部分。 – Christian 2011-04-22 20:08:12