繁体   English   中英

如何防止文本中的脚本标记执行?

[英]How to prevent script tags in text from executing?

我的浏览器中有一个文本框。 无论你在文本框中输入什么并点击了okay按钮,文本都会通过AJAX请求提交服务器,然后将该消息传播给剩下的人,包括我。

消息出现在<div>

我的问题是,如果我在该消息中键入html或脚本标记,它们不会出现在消息<div>并且它们正在执行。

如果我输入类似标签打开并以脚本结束,因为中间代码正在客户端执行,我该如何防止执行,并且我也能够在传播给所有人的消息中传播<script>标签。

您是否尝试过替换html字符实体? 例如,替换所有< with &lt;

如果您希望文本始终为文本,则视为文本,并且不要使用它来设置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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM