如果我有跨度,请说:
<span id="myspan"> hereismytext </span>
如何使用JavaScript将“ hereismytext”更改为“ newtext”?
如果我有跨度,请说:
<span id="myspan"> hereismytext </span>
如何使用JavaScript将“ hereismytext”更改为“ newtext”?
使用的innerHTML是SO不推荐。相反,您应该创建一个textNode。这样,您就可以“绑定”您的文本,并且至少在这种情况下,您不容易受到XSS攻击。
document.getElementById("myspan").innerHTML = "sometext"; //INSECURE!!
正确的方式:
span = document.getElementById("myspan");
txt = document.createTextNode("your cool text");
span.appendChild(txt);
有关此漏洞的更多信息: 跨站点脚本(XSS)-OWASP
2017年11月4日编辑:
根据@mumush建议修改的第三行代码:“改为使用appendChild();”。
顺便说一句,根据@Jimbo Jonny所说,我认为应该通过应用“分层安全性”原则将所有内容都视为用户输入。这样,您就不会遇到任何惊喜。
对于现代浏览器,您应该使用:
document.getElementById("myspan").textContent="newtext";
尽管较旧的浏览器可能不知道textContent
,但不建议使用,innerHTML
因为当用户输入新文本时,它会引入XSS漏洞(有关更多详细讨论,请参见下面的其他答案):
//POSSIBLY INSECURE IF NEWTEXT BECOMES A VARIABLE!!
document.getElementById("myspan").innerHTML="newtext";
我使用
Jquery
并且以上方法均无济于事,我不知道为什么,但这有效: