天天看点

jq html实体转换,如何使用jQuery解码HTML实体?

没有任何jQuery:

function decodeEntities(encodedString) {

var textArea = document.createElement('textarea');

textArea.innerHTML = encodedString;

return textArea.value;

}

console.log(decodeEntities('1 & 2')); // '1 & 2'

类似方法的安全问题

如迈克·塞缪尔,用一个

而不是不受信任的用户输入是XSS漏洞,即使 从未添加到DOM中:

function decodeEntities(encodedString) {

var div = document.createElement('div');

div.innerHTML = encodedString;

return div.textContent;

}

// Shows an alert

decodeEntities('

jq html实体转换,如何使用jQuery解码HTML实体?

')

但是,此攻击不可能针对,因为不存在允许..因此,仍然存在于“编码”字符串中的任何HTML标记都将自动由浏览器进行实体编码。

function decodeEntities(encodedString) {

var textArea = document.createElement('textarea');

textArea.innerHTML = encodedString;

return textArea.value;

}

// Safe, and returns the correct answer

console.log(decodeEntities('

jq html实体转换,如何使用jQuery解码HTML实体?

'))警告使用jQuery的.html()和.val()方法,而不是使用.innerHTML和.value也不安全*对于某些版本的jQuery,即使在使用textarea..这是因为jQuery的旧版本有意和显式地评估脚本包含在传递给.html()..因此,这样的代码在jQuery 1.8中显示了一个警报:

//

*多亏了额鲁彭克曼因为发现了这个漏洞。