如果我要在我的网站上显示用户生成的输入,仅通过在JavaScript中执行Element.innerText = "user input"
来显示它是否足够安全,还是我需要另外过滤输入以防止XSS? / p>
答案 0 :(得分:4)
'innerText'是否阻止XSS?
并非在所有情况下都如此! following excerpt is from the OWASP Foundation regarding unsafe usages of innerText
:
innerText是一个被认为是安全的属性示例。一些论文或指南主张使用它作为innerHTML的替代方法,以减轻innerHTML中的XSS。但是,根据应用了哪种innerText的标签,可以执行代码。
内容提供了以下示例(为清楚起见,已对其进行了修改)
const tag = document.createElement("script");
tag.innerText = `console.log('Inner Text Used')`;
document.body.appendChild(tag); //executes code
但是,在大多数情况下,innerText是用于防止XSS的方法,也是documented on OWASP:
...使用innerText / textContent。这将解决问题,这是补救基于DOM的XSS漏洞的正确方法