【发布时间】:2018-03-21 01:44:34
【问题描述】:
我最近在阅读一本 JavaScript 书籍,发现使用 innerHTML 传递纯文本会带来安全风险,所以我想知道使用 html() jQuery 方法会带来同样的风险吗?我试图研究它,但我找不到任何东西。
例如:
$("#saveContact").html("Save"); //change text to Save
var saveContact = document.getElementById("saveContact");
saveContact.innerHTML = "Save"; //change text to Save
据我所知,它们的作用相同,但它们是否都会带来相同的安全风险,即有人能够注入一些 JavaScript 并执行它?
我对安全知识不是很了解,所以如果有任何不正确或解释不正确,我提前道歉。
【问题讨论】:
-
您应该在使用
.html()(和类似功能)之前对内容进行清理。看看我刚刚创建的示例:jsfiddle.net/ayvx4ew9/6。另外,值得一读 this 和 this -
@Raptor 谢谢,因为我在我的网站上一直在使用
html()或innerHTML来传递原始字符串,所以我按照建议切换到text()和textContent。与链接中所说的相比,这些似乎也略微提高了性能,总是一个加号。
标签: javascript jquery html security