[英]How to prevent script tags in text from executing?
我的浏览器中有一个文本框。 无论你在文本框中输入什么并点击了okay按钮,文本都会通过AJAX请求提交服务器,然后将该消息传播给剩下的人,包括我。
消息出现在<div>
。
我的问题是,如果我在该消息中键入html或脚本标记,它们不会出现在消息<div>
并且它们正在执行。
如果我输入类似标签打开并以脚本结束,因为中间代码正在客户端执行,我该如何防止执行,并且我也能够在传播给所有人的消息中传播<script>
标签。
您是否尝试过替换html字符实体? 例如,替换所有<
with <
。
如果您希望文本始终为文本,则视为文本,并且不要使用它来设置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.