15

我正在开发一个单页网络应用程序。我通过直接创建 DOM 节点来进行渲染。特别是,所有用户提供的数据都通过创建文本节点添加到页面document.createTextNode("user data")

这种方法是否避免了 HTML 注入、跨站点脚本 (XSS) 以及用户可能做的所有其他邪恶事情的任何可能性?

4

2 回答 2

14

它创建了一个纯文本节点,所以是的,就它而言。

通过使用不安全的方法从输入的任何通道获取数据,可能会产生 XSS 问题createTextNode

例如以下将是不安全的:

document.createTextNode('<?php echo $_GET['xss']; ?>');

……但危险来自 PHP echo,而不是 JavaScript createTextNode

于 2012-07-25T16:42:44.823 回答
1

是的,它是 XSS 安全的,就像使用someElement.innerText = "...".

(同级答案通过包含易受 XSS 攻击的 PHP 代码段增加了混乱。)

于 2021-09-27T11:22:50.440 回答