我的浏览器中有一个文本框。无论您在文本框中输入什么内容并单击好的按钮,文本都会通过 AJAX 请求提交服务器,然后将该消息传播给其他人,包括我。
该消息出现在<div>
上.
我的问题是,如果我在该消息中键入 html 或脚本标记,它们不会出现在消息 <div>
中他们正在执行。
如果我输入类似标签打开并以脚本结尾的中间代码在客户端执行,我怎样才能阻止执行并且我能够传播 <script>
标签也在传播给所有人的消息中。
最佳答案
如果您希望文本始终为文本,请将 is 视为文本,并且不要使用它来设置 innerHTML
属性。
改为更新文本节点。
更新
例如,如果您在 userInput
中有用户输入,并且想要显示它,则可以将其视为文本,而不是 HTML。
var element = document.body,
// For example
userInput = "Alex <script>alert('xss')</script>";
// Don't do this! Your input is text, not HTML.
// element.innerHTML = userInput;
// Use this instead
if ('textContent' in element) {
element.textContent = userInput;
} else {
element.innerText = userInput;
}
jsFiddle .
关于javascript - 如何阻止文本中的脚本标签执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440607/