Javascript setAttribute()和XSS

Javascript setAttribute()和XSS,javascript,security,xss,Javascript,Security,Xss,我正在编写一个脚本,需要将当前页面位置写入DOM,我关心的是XSS。下面的Javascript代码段对XSS安全吗 var script = document.createElement('script'); script.setAttribute('src', 'http://fake.com?src=' + encodeURIComponent(document.location.href)); document.getElementsByTagName('head')[0].appendC

我正在编写一个脚本,需要将当前页面位置写入DOM,我关心的是XSS。下面的Javascript代码段对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访问方法是否安全

无需使用“setAttribute”:

我不知道XSS漏洞会潜入何处。我想,“fake.com”上的服务器代码必须针对“src”参数的奇怪值进行“硬化”,但不管Javascript看起来如何,这都是事实

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