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

How to grab only the text of HTML elements in a safe and secure way

本文关键字:方式 抓取 元素 文本 HTML 安全      更新时间:2023-09-26

所以"<h1>Hello World</h1>"将只返回'Hello World'。

I've try:

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

这在大多数情况下都很好,但它确实打开了一个xss漏洞,当字符串是这样的:<img src=1 onerror=alert(/XSS/)>,当我期望它返回一个空字符串

你可以试试这里找到的代码-最快的方法来转义HTML标签作为HTML实体?

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/);"