以下操作是否百分之百安全?(涉及IT技术)

5
以下操作是否百分之百安全?
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
可能是重复问题:https://dev59.com/_HRB5IYBdhLWcg3w4bKv - Mike Samuel
请将此重命名为一些描述性的名称。 - endolith
3个回答

5

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

尽管如此,除了XSS之外还存在问题。如果不受信任的输入是以下内容之一,它无法阻止社交工程攻击:

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

除了不包含第三方内容之外,防止社交工程攻击的最佳方法是明确表明内容来自第三方。


1

现在已经测试过了。看起来是正确的。如果出现问题,那应该是浏览器的错误,而不是你的错误。
像往常一样,服务器应该对所有用户输入进行正确的HTML视图处理,然后将其返回给用户。

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


1

5分钟前在Firefox7控制台中测试过 - Sergey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接