我正在开发一个单页面的webapp。我正在通过直接创建DOM节点进行渲染。特别是,通过使用document.createTextNode("user data")
创建文本节点,将所有用户提供的数据添加到页面。
这种方法是否避免了HTML注入(inject),跨站点脚本(XSS)以及用户可能做的所有其他邪恶事情的可能性?
最佳答案
它会创建一个纯文本节点,所以可以,就它而言。
但是,通过使用不安全的方法从输入到createTextNode
的任何通道中获取数据可能会产生XSS问题。
例如以下是不安全的:
document.createTextNode('<?php echo $_GET['xss']; ?>');
…但是危险来自PHP
echo
,而不是JavaScript createTextNode
。