2011-10-10 50 views
5

它是100%安全做到以下几点?:是否100%安全地执行以下操作?

var untrusted_input_from_3rd_party = '<script>alert("xss")<\/script>'; 
document.getElementsByTagName('body')[0].appendChild(document.createTextNode(untrusted_input_from_3rd_party)); 

考虑到第三方可以输入任何东西(HTML,CSS等),我可以肯定它不会,如果做任何伤害我通过createTextNode然后将它添加到dom中?

+1

是*任何*永远“100%安全”? – Spudley

+0

也许99.9%呢? :) – Polar

+0

可能的重复:http://stackoverflow.com/questions/476821/is-a-dom-text-node-guaranteed-to-not-be-interpreted-as-html –

回答

5

这是防止XSS的好方法。通过createTextNode的DOM操作广泛用于安全地嵌入第三方文本。

这就是说,除了XSS之外还有问题。 它没有做任何事情来阻止社会工程学尝试,如果不受信任的输入是一样的东西:

警告:我们检测到您的计算机上的恶意软件。将http://evil.org/复制并粘贴到您的浏览器URL栏中以解决问题。

,以防止社会工程(除了不包括第三方内容)的最好办法是要清楚的是,内容来自第三方。

1

现在进行测试。似乎是正确的。如果出现问题 - 应该是浏览器bug,而不是你的。
像往常一样,服务器应该对所有用户输入做出正确的html视图,然后将其返回给用户。

但是为了降低服务器负载(如果可以接受的话),你可以肯定地使用它。

相关问题