2010-12-03 30 views
4

J'écris un script qui doit écrire l'emplacement actuel de la page dans le DOM, et je suis préoccupé par XSS. L'extrait JavaScript suivant est-il sécurisé à partir de XSS?setAttribute() et XSS

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

Je sais que l'utilisation document.write() pour accomplir la même chose est pas sécurité dans différents navigateurs, mais je ne l'ai pas vu une source de discuter si vous utilisez les méthodes d'accès aux DOM est.

Répondre

8

Il n'y a pas besoin d'utiliser « setAttribute »:

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

Je ne vois pas où une vulnérabilité XSS se faufilait ici. Le code du serveur sur "fake.com" doit être "durci" contre les valeurs étranges de ce paramètre "src", je suppose, mais cela sera vrai, peu importe à quoi ressemble votre Javascript.