2010-12-03 118 views
4

我正在編寫一個需要將當前頁面位置寫入DOM的腳本,我很關心XSS。以下Javascript代碼段是否安全於XSS?setAttribute()和XSS

var script = document.createElement('script'); 
script.setAttribute('src', 'http://fake.com?src=' + encodeURIComponent(document.location.href)); 
document.getElementsByTagName('head')[0].appendChild(script); 

我知道,使用document.write()來完成同樣的事情是安全在不同的瀏覽器,但我從來沒見過任何來源討論如果使用DOM訪問方法是。

回答

8

沒有必要使用「的setAttribute」:

script.src = 'http://fake.com?src=' + encodeURIComponent(document.location.href); 

我沒有看到一個XSS漏洞就在這裏偷偷英寸我想,「fake.com」的服務器代碼必須「加固」,以抵禦那個「src」參數的奇怪值,但不管你的Javascript看起來如何,這都是事實。