javascript - 如何以安全可靠的方式只抓取 HTML 元素的文本

标签 javascript jquery html xss

所以 "<h1>Hello World</h1>"只会返回“Hello World”。

我试过:

$('<div>').html('<h1>Hello World</h1>').text()

这在大多数情况下都可以正常工作,但是当字符串是这样的时候它确实会打开一个 xss 漏洞:<img src=1 onerror=alert(/XSS/)> ,当我期望它返回一个空字符串时

最佳答案

您可以尝试在此处找到此代码- Fastest method to escape HTML tags as HTML entities?

function sanitize(str) {
  return str.replace(/&/g,'').replace(/</g,'').replace(/>/g,'');
}

在您的示例中,假设有如下所示的 html:

<div><img src=1 onerror=alert(/XSS/)></div>

像这样简单地清理它:

var string = $('div').text();
var sanitized = sanitize(string); // "img src=1 onerror=alert(/XSS/);"

关于javascript - 如何以安全可靠的方式只抓取 HTML 元素的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30469645/

相关文章:

javascript - jQuery - 使用 html5 数据属性选择构建对象数组

javascript - PHP switch case HTML 多选

javascript - MooTools 的隐藏功能

javascript - meteor :迭代嵌套元素

javascript - Meteor 0.8.0,UI 预期有效属性名称

jquery - 在 Jqgrid 中显示 Enum 描述而不是 Enum

javascript - jQuery 旋转器旋转不正确 - 太多递归

html - 如何去除 HTML5 中 <svg> 和 <td> 之间的空格?

在 Flask 中实现 Bootstrap 时的 HTML 表格格式化

javascript - 使用 JavaScript 中的函数打印从 1(其中 1 是质数)到 n 的质数并将它们附加到数组