javascript - 如何阻止文本中的脚本标签执行?

标签 javascript html

我的浏览器中有一个文本框。无论您在文本框中输入什么内容并单击好的按钮,文本都会通过 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/

相关文章:

C# - 是否可以(以及如何)使用 SgmlReader 执行 XSL 转换

javascript - React-router hashHistory 推送仅更改 URL

javascript - ng-click 不适用于 <li> 元素

html - 单击菜单项后导航栏和子菜单不折叠

php - CodeIgniter - 表格中的引号

javascript - 如何解决导航栏与正文内容或 CSS 中其他页面重叠的问题

javascript - Angular 8 和完整日历组件

javascript - 根据值删除本地存储数组对象

javascript - 正则表达式不匹配所有事件

javascript - 单击图像时如何将图像更改为另一个图像